I found a solution. I had to add this context to my extensions_custom.conf file:
[macro-dialout-trunk-predial-hook]
exten => s,1,NoOp()
same => n,ExecIf($["${CALLERID(number)}"="15555555555"]?Set(CALLERID(number)=${REALCALLERIDNUM}))
same => n,MacroExit()
Where 15555555555 is the trunk's default Caller ID.
The REALCALLERIDNUM variable contained the Caller ID I wanted, and macro-dialout-trunk-predial-hook is automatically called before a trunk dials out. So I had it check to see if CALLERID was the default, and if so, replace it with REALCALLERIDNUM. Seems to be working perfectly now. Thank you to all who contributed to the discussion.