Let me step thru a few things that might help.
Use L2TP tunnels as the base for the rest of the setup. This is standard udp/1701 and easy to traverse thru firewalls.
3 wan router (cable) -> 1 wan router (data center)
I'm going to say 'cable' for the above router just for ease of explaining. Pretend that router has 3 cable internet connections. The 'data center' side will have 1 wan connection.
The data center router needs X ip addresses - the same number of tunnels you plan to bond. I'll use 3 in this example.
1. Assign data center router 3 _new_ ip addresses that are routeable. For this example we'll use fake ips 172.16.30.1, 172.16.30.2, and 172.16.30.3. Assign all 3 of these to a loopback adapter if you choose. I always setup an empty bridge interface and call it loopback.
2. Add dst-nat rules for destination-ip=172.16.30.1, protocol=udp, port 1701, action 'redirect'.
3. Add dst-nat rules for destination-ip=172.16.30.2, protocol=udp, port 1701, action 'redirect'.
4. Add dst-nat rules for destination-ip=172.16.30.3, protocol=udp, port 1701, action 'redirect'.
Items 2 - 4 establish an entry in the connection table and now will reply with the correct src-ip. Without this crucial step you could try to source route l2tp but it seems to still flip flop because of udp timeouts. This piece here solved most of our pain. Crucial piece.
5. The cable router now has 3 different ip addresses it can make connections to. Cable wan 1 goes to .1, wan 2 goes to .2, wan 3 goes to .3.
6. Enter static routes on the cable router for each of the 3 remote l2tp tunnel endpoints. . . use whatever gateway IP you want each tunnel to go out. 172.16.30.1 -> cable gateway 1, 22.214.171.124 -> cable gateway 2, etc. . .
8. Create 3 l2tp tunnels all going to the data center box across different wan connections. Each of your 2 l2tp-clients will have a different endpoint ip address. Test connectivity at this point first, don't bother adding eoip until you know 3 tunnels are stable. Assign /30 networks to each l2tp tunnel. For instance, 10.0.0.1 & 10.0.0.2, 10.0.0.5 & 10.0.0.6, 10.0.0.9 & 10.0.0.10. Make sure to use correct /30s.
9. Layer EoIP tunnels on top of l2tp using the /30 ips you assign to each l2tp tunnel. Assign each tunnel it's own ID and make sure you don't use duplicate macs. You now can put GRE thru the tunnels without worrying about someone killing GRE somewhere in the middle.
10. Now create a bonding interface and assign an IP on top of that to route things thru.