This is what I've done in the past, not sure why we need to "hack TCP" to get zero downtime.
As an additional thing I do rolling deploys where I just create an entirely new VM and add it before removing the old one. This just means that I don't have to recycle a node that might potentially have some state on it.