I have thought about whether there is anything better, but I honestly couldn't come up with anything.  For a while I was hoping to just need upstream and downstream but then hit issues with situations where the AS chain had taken control of the S-CSCF ACRs but we still needed to raise the I-CSCF and BGCF ACRs from within the transaction.

I did consider have separate references to upstream/downstream (for passing messages to the ACRs) and to S-CSCF orig/ S-CSCF term/ I-CSCF and BGCF for reporting, but decided it wasn't worth it.  It may be that your idea of just having a list for the second purpose might work, but it could be quite fiddly to maintain.