I was also extremely bothered by the fact that the cursor cannot live outside the current viewport and scrolling the buffer would drag the cursor as well. At the time, it seemed impossible to fix because of the way Emacs works, and the solution was something like "you are using it wrong - you need to use marks instead".
But I would love to go back to it, to be honest. VSCode is very good, but Emacs is a whole other level of automation and convenience.