Getting All SQL Corresponding to Locks
Is there a way to get the SQL corresponding to all of the locks held by a session, instead of just the most recent batch?

Only in XEvents/Trace by capturing the begin/end statement and acquisition and release of the locks. And that is a very verbose thing to trace, so you would rarely turn on such a trace on a production system.
sys.dm_tran_locks lists all the locks, but there's no DMV that stores the statement that caused the lock to be acquired.