It might even be hacked in Elisp at least for a proof of concept, by
detecting when point is moved because of scrolling, then setting
cursor-type to nil, recording the original point, deactivating the mark,
and then in some pre-command-hook reactivate the mark (if it was
activated before) and set point back to its original value (thus causing
the scroll-back).
That's what I tried with
http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg01892.html
Oh, yes, now I remember it. Thanks. That's neat.
BTW, when some things don't properly run pre/post-command-hook, I think
it should generally be treated as a bug (even if the fix is not easy).
E.g. the mouse-drag problem.
If you have any ideas of changes we may want to make so as to make such
a package easier to write, please submit them.