Need pointer for call forwarding between Asterisks over VoIP

I would like some advice or a pointer on how to setup forwarding of calls from one Asterisk to another over VoIP with limited bandwidth.

I have two Asterisk systems in two locations. Primary locations gets all the calls on BRI 3span (6 lines, but could increase) and when primary location is unattended I would like to forward calls to the secondary system over IP. Bandwidth is limited, so I either need to keep some calls in queue in the primary location or not answer them at all letting them ring (preferred) or cause engaged tone. I need to avoid forwarding all calls to secondary location right away to avoid using bandwidth just to play hold music reducing bandwidth available for calls with operator.

Current Setup
Currently everything is configured via FreePBX, so I am probably using some terminology specific to FreePBX. I have an IAX2 trunk between the two Asterisk systems. When call comes in to the primary location it gets an announcement then goes to a queue. The queue has a fail over destination set to the IAX2 trunk to the secondary location. All agents in the primary location are dynamic, and when queue has no registered agents all calls fail over to the IAX2 trunk. That part works.

As far as network goes each Asterisk system is behind a NAT gateway using private IP ranges on its respective LAN. I am using IAX2 trunk because it is supposed to be more efficient than SIP trunk for multiple concurrent calls and it traverses NAT nicely. I also had some problems with pass caller Id over SIP trunk but I think I can solve those if I have to. I can get P2P VPN between the two Asterisk boxes so NAT would not be an issue if I have to use SIP.

Current problem
The IAX2 trunk has maximum channels value set to 2 because of the limited bandwidth. This is in the middle of nowhere so increasing bandwidth is extremely expensive. When all 2 channels on IAX2 trunk are used the queue on the primary location can no longer fail over to that trunk and simply and rudely hangs up on the caller. This is after having answered the call and played the announcement so the caller already paid the flag fall cost but did not get the service. Forwarding the call to secondary by making another call over public phone network will cause the original Caller ID to be lost, which is highly undesirable, and then there is the call cost which is rather avoided even though not a very important factor. Preserving the caller id is very important.

I suspect this is a common scenario but I just can not seem to find the related topic. Maybe I am using wrong search terms. Can someone please point me in the right direction. I’m not afraid to learn to deal with Asterisk dial plans directly instead of using FreeBPX. I’m a former sys.admin but very new to Asterisk. At this time I need at least a high level view of how it might be put together and what I need to be looking for.

Thanks in advance