So when i'm programming I find myself spending far more time thinking about what to type next than actually typing it, seems to me like there isn't much to gain by learning vim/emacs or am I missing something?
People often mistake the succinctness of vim's commands as an attempt to save a few keystrokes typing, but that's only a side benefit.
The vim command structure makes it trivial to define transformations on common blocks of text; words, sentences, paragraphs (lines), blocks of code inside {..}, etc. It makes it easy to repeat those commands, by repeating them a fixed number of times, applying them to every instance in the file, or asking for confirmation around each one.
But, most importantly, it means that we can now extract that little bit of text-transforming functionality into a script we can save and bind to a new command (if it's something particularly reusable). This is really what vim is about to me - providing a language to describe text transformations, in the form of sequences of commands. This means that the way I code every day, conveniently saving me a few seconds like you mentioned above, is the same method I use when writing/editing plugins/macros for the editor to do more complicated tasks, like say consistently formatting every line of a log file that begins with [ERROR] and removing all other lines, so we can process it with some other tool.
Sure, you could write a script in [python/perl/ruby/etcetcetc] to do all that just as well, but the point is that Vim provides a nice little domain specific language right at your fingertips, optimized for working with text at a higher level, capable of handling one-off jobs as easily as big jobs over a whole log file or even as a little command to be reused later.
There's a reason vim & emacs are referred to as great 'editors': their advantages show mostly when editing & refactoring. They don't help you with code that flows from your head to your hands fully-formed much more than any other editor or IDE. Where they do help is in making actions like 'swap this block of code with this one'; 'replace the text inside these brackets with this', 'execute this sequence of actions on everything matching this regex' etc. efficient.
Doesn't that argument work just as well for touch typing? Would you argue that being a touch typist is useless?
Do you ever use keyboard shortcuts... Ctrl-A, Ctrl-F, Ctrl-C, Ctrl-V, Ctrl-Z, Shift-End, etc.? Extrapolate that to everything you might want to do when reading, reviewing, or editing a text file.
You are thinking about "what to type". In an editor with a rich set of text editing commands, what you can type is expanded. So when you are thinking about it, what you can think is expanded.