Hi!
Sounds not very scalable to me… 
With stock FreePBX, you would use the CallerID field of the outbound route to specify that a dial pattern is specific to an extension.
From the online help: If CallerID is supplied, the dialed number will only match the prefix + match pattern if the CallerID being transmitted matches this. When extensions make outbound calls, the CallerID will be their extension number and NOT their Outbound CID. The above special matching sequences can be used for CallerID matching similar to other number matches.
It looks however like the easier way to achieve what you want would be to use a commercial module, Extension routing.
re:
As a trial it is free for one year or $39.00 for 25 year license (only first year of support is covered by this, you need to renew support if you need it) but it’s half price until Monday for Black Friday/Cyber Monday.
re: https://www.freepbx.org/cyber-monday/
Please take my suggestion with a grain of salt as I don’t use that module but it definitely sounds like it would be the easiest way to tie an extension to a specific outbound route.
You do need to be using the FreePBX distro for commercial modules to be supported and you did not mention if you are using it or not…
Are you sure however that you have to bind your outbound calls to one specific trunk, do they disallow you from using a caller id different from the one apparently assigned to that trunk?
By the way, none of the ITSP (VoIP providers) I use for inbound calls force me to have one trunk per number. Usually it is something like assigning more than one number per account and registering my PBX to that account.
Assuming you really have to go through those hoops, that there are no ways around it, the simplest solutions seem to be the commercial module I mentioned or changing ITSP (VoIP provider)
.
Good luck and have a nice day!
Nick