Steve,
When you failover, do the 20.x.x.x robots appear under the secondary hub at all? If they appear, they could have the wrong (untranslated) IPs, but it sounds like that is not your issue.
You mention ICMP is open, but do you also have TCP 48002 open to both the primary and secondary hubs through the firewall?
Have you tried testing with telnet? From one of the robots, you should be able to telnet to the secondary hub IP address (listed in the robot.cfg file) on TCP 48002. If you get a connection, the robots should be able to register with the hub.
-Keith