We do it a bit differently in Wine, but I don't see why a hardware mouse move couldn't be queued at the time the window is moved, without requiring a separate server call.
Get the current mouse position and send_hardware_message()? I am not sure how much of the real problem that is, but probably the position from get_cursor_pos() may be outdated before send_hardware_message(). That issue was actually present in v1 in my patch. Or am I maybe misunderstanding the suggestion?