Any reason why you can't send a keepalive signal every so often to sustain the connection? A kind of 'are you there' signal that you can trap if one daemon dies, but also use as a keepalive?
Update: Re-reading this before coffee, ugh... what I mean is... send the other daemon a socket bit using IO::Socket or something like that to sustain it's existence? In other words, don't let them go idle long enough for the timeout to occur.