Besides the ProxyCommand approach, another way would be to define 'ssh' as a shell alias/function that does the port knocking first and then passes any parameters to the normal /usr/bin/ssh.
Or you could make your own 'ssh' shell script somewhere else on the filesystem that handles it for you.
Or you could make your own 'ssh' shell script somewhere else on the filesystem that handles it for you.