I had the same problem with using VNC over SSH tunnel. The freezes occured frequently, both with putty (windows) and openssh (linux).
With putty I copied the connection profile and changed a few options just to see what happened and no more freezes!
The changes in putty are:
Connection:
UNCHECK "disable Nagle's algorithm"
(I left "enable TCP keepalives" checked and "seconds between keepalives" at 30)
SELECT "internet protocol version" IPv4 (instead of "auto")
Connection - SSH:
CHECK "Enable compression"
I am not sure what option did the trick, but I am a happy camper now. I cant get it to freeze, but when I switched back to the old profile to check, it froze within a few seconds.
The freezes occured mostly when sending large updates over VNC, like scrolling a window.
Perhaps the disabled Nagle algorithm flooded the server with too many small packets or perhaps because ipv6 was disabled on the remote VNC server but not on the other hosts. It would require some more testing with the individual options to figure that out.
-v
and see what gets printed out when the connection dies.