As I went from "no" experience to my current position my job switches (every ~2 years) always were for 10%-25% (in one case, 100%, but that was Midwest to Bay Area so other factors are at play). I never got more than 5% merit increases otherwise.
Most of my friends who have been at the same place for >10 years in engineering (not software) are just now reaching parity with my base salary (CoL-adjusted) and they didn't spend 6 years in academia before transitioning to industry.
Two year tenures isn't job hopping. It's a reflection of how this industry works. Very few companies offer sufficient breadth and depth of product complexity, career advancement, or other similar things to make it worthwhile. I'd say the sweet spot is 2-4 years, except at very large companies (e.g. Google) (EDIT:) or companies which are developing complicated products with physical engineering or regulatory factors complicating development. Anything longer, especially if there is a lot of long-term stasis on a resume (e.g. "tech lead on product X" for more than a year or two), is an indication to me of someone who either isn't capable of stretching himself or doesn't want to. Anything less, especially if more than one project per job exists, indicates an inability to see a project through to maintenance or someone who is easily bored.