I ignored rotation about the rocket's axis, since the rotational position at landing doesn't matter.
The controller for this almost has to be a predictive controller. You can't do this on feedback alone. The control goal is not stability; it's end state - stopped, vertical, and on target, all achieved at the same moment.
With enough fuel, you could do this step by step. Get into stable hover while vertical, then move slowly sideways over target, then descend slowly. NASA's Morpheus rocket works that way. Space-X is using much more aggressive control strategies; in the last seconds it's clear that all the goals are being sought simultaneously.
Landing should work much better on land, with a bigger, stationary target in a less windy place.