I'm trying to get my Mega running so I can try the code, can't get past the dreaded "sync" error.
In an attempt to at least fix the symptoms, how about running a watchdog task that checks the TCCR3A value and changes it to 32 if 0. For that matter just write 32 every time but record that the value was wrong.
Such a weird thing smells of memory leaks or an overflow somewhere. Bloody hard to find normally.
Rob