Note there appears to be a bug where the use of ControlPersist breaks the use of '-W'. You end up with 'bad packet'.
openssh-6.0 release notes has this:
* sshd(8): unbreak stdio forwarding when ControlPersist is in use; bz#1943
I haven't tested to see if that resolves the issue yet though (on osx which of course does not have 6.0).However, the netcat version works fine.