I have been using multiple GRE tunnels either manually or with NHRP and had some problems when a tunnel would fail due to an outage. The failover would reset, but connections across the private tunnels would be reset. Cisco phones would reset for example. I seem to have solved this problem by making sure that the maximum MTU for all tunnel paths matches.
For example, one tunnel path has an IPSEC tunnel so the MTU is lower than another path that is purely GRE, perhaps for a backup path. The IPSEC tunnel has a lower MTU. This is fine, but established connections seem to get upset if the MTU drops. It may or not get the unreachables or redirects but regardless some applications seem to think it is better to reset the connection and re-establish over new path/MTU. No big deal for some applications but annoying with the Cisco Call Manager / SCCP phones on ends of the tunnel deciding to reset.
Make sure IP unreachables are enabled or at least they are enabled for paths that you care about. Without this, when the TCP window tries to open up and MTU increases, you will end up with hung connections.
Also, the command 'ip tcp adjust-mss xxxx' can be useful to hint at a better MTU ( MSS = maximum send size ).