It might be more efficient to dynamically change ${CALLERID(number)} in [macro-dialout-trunk-predial-hook] and/or [from-internal-custom] depending on ${EXTEN}
see /etc/asterisk/extensions.conf for the basic rules, it could save a lot of effort and maintenance.
Perhaps [ext-did-custom] also for inbound routing perhaps with a set of asteriskdb put/get's to so redirect/distribute the inbound calls. It would dramatically reduce your dialplan which is the root of your problem but at the loss of a GUI to do it with.