Just some quick thoughts:
Use a third IP (virtual) address on both interfaces, if one goes down, packets can go on the other device (assuming your other device has a route). This needs some work.
iptables can already match on source port and user, wouldn't that be enough?
You could create a tunnel between the two devices.
Try searching for "TCP session mobility" (which would allow IP addresses to change, hopefully). I do remember seeing a program that proxied all the connections, so you could do this. It was a while ago, and can't quickly find it on google or in my bookmarks.
http://www.hpl.hp.com/personal/Jean_...ileIP/mip.html for "mobile IP" never tried it myself, but maybe you'll find something.
Anyways, post back with what you find out.
Good Luck,
chris