Actually possible, but may not be practical depending on volume. I've done this for a company that was running two competing companies and needed to send different CPN based on who they were representing. For the larger company do things the normal way. For each remote office you'd need a loop start trunk port and single line (analog station) port. Loop these ports together, LS to SL. For each remote you'd need enough ports for the maximum traffic you expect. Program the SL ports as house phones to dial "92001" (or whatever SIP group is) and program them to send the CPN for the location they represent.
Now when you dial a specific LS port (or probably a trunk group containing multiple LS trunks) it will take its cross-connected SL port off hook, which will cause the house phone function to dial SIP TG...SIP will wait for DTMF of number to dial, then complete the call. To the SIP carrier it will look like call is coming from SL port, will see that port's CPN.
For my customer the person placing the call decides whether to call normally or use the special trunk group. But in your case the 5000 could do this automatically using ARS: user dials Houston number. ARS sees it's Houston, and instead of sending to SIP trunks sends to Houston loop start trunk group. SL goes off hook, dials SIP TG, then echoes dialed number into trunk.
I did this with SL/LS because I didn't need a lot, but I'm sure you could do with two ports on a T1 card, one port programmed as 24 OPX (analog station), one as LS trunks.