After re-reading your patch more closely and giving it some more
testing, I've discovered it breaks an existing use case:
Emacs -Q
C-x 2 ;; split-window-horizontally
C-x 4 . ;; xref-find-definitions-other-window
xref-backend-definitions RET
C-n RET ;; in the resulting *xref* buffer
Of course, it doesn't work if you tried it only with part of my changes.
When I submitted my initial patch, I tested it in all your test cases,
including the above test case that was not broken with my patch.
But you asked to break my patch to several pieces and submit them
separately to different bug reports. No wonder that each of them
doesn't do what the whole patch did.