Based on @Drew's answer, I've made a package revert-buffer-all.
It handles some additional cases:
- Progress reporting (since it can be slow with many files open).
- Clear undo state, so you don't accidentally enter the previous buffer state while undoing.
- Support for packages that load undo history when reloading the buffer - undo-fu-session.