Very relatable. What helps is just starting out a prototype immediately in stage (1), not caring about thinking it through deeply first. Then that "new evidence that changes the equation enough to require a different approach" arrives faster and is easier to incorporate. Plus, you get to be seen as "working" all the time (from the point of view of others, which would otherwise consider your pure thinking stage as 'slacking')!
Essentially you'd be doing the "thinking" by actively coding (at least a minimum solution), instead of thinking about the problem abstractly first. Though I often do it just like you described it, with all the issues you mentioned.