I agree with the other respondents. The present operation is the simplest thing that could possibly work, both in concept and in implementation. This does not mean that the implementation is simple, it only means that no other simpler implementation has yet been found.
Kent Tenney has proposed, and Vitalije has implemented, a concept known as "node history". This allows one to look at the history of a node independently of questions of undo.
git also allows line-by-line perusal of the history of individual files, via git blame and gitk. In principle, one could track the history of nodes this way, but it would be quite clumsy. Still, git can recreate virtually any kind of history, with enough work.
I have no plans to change Leo's undo approach, which is described in the module level docstring in leoUndo.py. See the section:
<< How Leo implements unlimited undo >>.
Finally, let me say that the problem with restoring marks will surely turn out to be a relatively simple bug to fix. The fix will happen shortly.
Edward