I disagree. If a firewall gets in the way, this can either be because there is a valid reason, and then sneaking by is bad, or there is no valid reason, so the firewall should be fixed. Adding additional complexity and overhead to award people for laziness is very bad.
Detecting that there was a 'failure' due to a firewall is also quite
difficult to determine anyhow. The only way would be to compare
multiple address pairs and determine in one case it works but
in another it doesn't work; and be sure that it wasn't just a transiant
failure.