Of the choices that he proposes, #2 seems like the obvious solution to me - but he writes it off as too difficult.
Phabricator’s stacked diffs [0] works wonderfully well to support this exact workflow (it isn’t clear from the post which versioning system the author uses and what workflows it supports - maybe I missed it?)
[0] https://jg.gg/2018/09/29/stacked-diffs-versus-pull-requests/