How to find what is contributing the most to "ORA-01555: snapshot too old" error
What I know for sure is ... the statement that errored is not the root cause, it's just a victim

Probably, but by no means certainly.
First thing to understand is that Oracle absolutely, totally, guaranteed-edly will not allow a Dirty Read.  Ever.  Each and every query that it runs is Point-in-Time consistent with the moment (System Change Number) that the query started.
To achieve this, Oracle uses Undo to effectively &quot;roll-back&quot;, in-memory, any changes made to the data blocks since the query started.  Even if you're table-scanning a billion row table, any records added to the end of the table while the query is running will not appear in your results.
Obviously, Oracle needs the Undo to achieve this and, if those particular Undo entries get removed from the Undo Tablespace, then Bang!  ORA-01555.
Now, as you quite rightly say, lots of stuff could be making changes and &quot;using up&quot; all the Undo space but, almost as likely, is that the query is taking so long to do whatever it's doing that the Undo get aged out naturally.
How long does this query take to run?

Seconds?  OK, that would be a big worry.
Minutes?  This is the most likely scenario and, in the first instance, I would suggest you look into tuning the query, if possible.
Hours?  What did you expect would happen?  :-)