The last point required some code refactoring (see new functions wayland_surface_calc_constraint and wayland_pointer_update_constraint, to make the constraints related functionality available outside of wayland_pointer.c and in a manner that allows us to still avoid double locking of wayland_surface/wayland_pointer.
Although, as I write this I wonder if instead of this refactoring I could just reapply the cursor clip (like I have done on pointer enter), and basically get the same effect... hmmm...