Thanks for the change.
I think it'd be easier and more uniform to set up ping after the channel is established, without making it dependent on a particular launch scheme. You can do so by implementing ComputerListener and checking preOnline, and use Channel.call and setup a ping thread on both sides.
This also allows us to package this functionality in a plugin, which addresses my other concern of having too many configuration options in the UI out of the box. I feel that this option is too advanced for most users.
I also wonder if we should have a shorter default ping interval if 10 minutes in the core is too long for too many environments. I think it's hard for people to understand the root cause from the failure mode (of dropped connections), and I'd rather be inefficient (by issuing lots of pings) than broken by default.
I've submitted a pull request to implement this (https://github.com/jenkinsci/jenkins/pull/70)