There is a dropdown called "Old Version History" from which you can diff
from a previous patchset instead of viewing the whole patch (yes, I had
to be told about it).
It's not perfect though, and for instance the commit message is always
compared as if it were new.
You can also compare it by downloading with git review, but the only way
I found requires you to copy the sha1 ids, which makes a horrible usability.
I like your proposal of doing patchsets as a branch. Sometimes the new
patchset are better viewed as a completely different work, in which case
it could be based from the parent, but most subsequent patchsets fit
better in the branch model.
Branched patchsets could then be moved to master as a merge (which is
not only better from a history POV, but also in tracking the authorship)
or as a cherry-pick (eg. for a typo fix)