I sometimes turn to magit when I want to navigate a file's history through git-blame, though.
(Also, whether it's good or not, rebasing in all of its forms becomes your second nature because it becomes so easy...)
If you don’t like using ediff and really need to edit tons of hunks before staging, you could always commit/stash your dirty copy, revert back, edit files, check them in the way you want, possibly in multiple commits, then rebase your previously staged working copy on a new head and soft reset the head (it’s easier than it sounds) - which is the way I would do it in the terminal too if there was a lot to edit since it’s more fail-proof.