Eu odeio quando respondo a minha própria pergunta.
A solução que obtive foi usar ControlPersist=3600
ao iniciar o processo mestre ssh. Desta forma, se o shell não sair de forma graciosa e matar o ssh, ele se desligará após uma hora de inatividade. Embora eu ainda use uma armadilha na saída para fechar o SSH de forma limpa.
ssh -o ControlMaster=yes -o ControlPersist=3600 -o ControlPath=/tmp/ssh-%u-%h-%p-%r -Nf $HOST
trap "ssh -o ControlPath=/tmp/ssh-%u-%h-%p-%r $HOST -O exit" exit