This isn't idle expiry – the response is caused by a periodic re-handshake that most SSH clients and servers initiate every few hours to exchange new keys. The process is very similar to what happens during the initial connection, including re-verifying the server's "host key" (as a side effect, not as a goal), and apparently your server is doing the re-handshake incorrectly.
In other words, it's a problem with the custom SSH server software that your tunnel is using. (Though, first make sure you have the latest version of PuTTY (i.e. 0.77), in case it happens to be a client bug.)
PuTTY lets you adjust or disable the key re-exchange parameters in "Connection > SSH > Kex". The default time interval is 60 minutes and the default data limit is 1 GB transferred – PuTTY will start a rekey every time either of those limits is hit.
With modern ciphers, you can safely increase the rekey periods (hourly rekey was meant for ancient 64-bit or even 56-bit ciphers), e.g. time-based rekey could be set to a week or even disabled entirely, while data-based rekey could be set to something like 1024GB
or disabled as well.
However, this only adjusts client-initiated rekey – it cannot prevent the server from requesting a rekey.
Finally, ~/.ssh/config is for OpenSSH – it is not read by PuTTY. The same settings exist in PuTTY but have to be configured through its own settings screens.