This whole discussion reveals once again a fairly significant design limitation in Asterisk.
You should be able to set more external IP addresses, not just one, and determine which IP you want to be in the SIP header, depending on the trunk and the VSP.
This is outside the scope of FreePBX for most intents and purposes. The limitations we are jumping through hoops to overcome are built into the engine of the system. Yes, there are ways to “fix” it through the clever use of various settings, but in the end, we are still pounding away on a problem that is way deeper than we need to go with FreePBX.
Guys, just get over it asterisk is a backtoback user agent, you will never be able to force it to be a proxy ( which is what you are looking for) if you want a proxy , deploy one, it won’t be asterisk , just get used to that.