1) Solving the problems involved the focused exercising of all of my software dev knowledge – often around database access, sometimes around garbage collection and memory allocation of the specific platform.
2) The impact was highly visible and appreciated (by the team, management, and system users), and the result was usually objectively measurable, e.g., the global search now completes in 1/50th of the previous time.
That said, when I reflect on the 10 or so projects I helped in this time, they were all problems the senior dev(s) on the team could have figured out. So, it wasn't really that I was some rockstar who had special knowledge. It was more that I was given time to focus on the issues, while the regular devs on the team had bugs to fix, features to work on, etc.
Like you, I now work for myself, but if I were offered a job doing small-medium performance optimization projects (without travel), that would be tempting.
Sometimes that's sad. (When the client / team is awesome)
But usually it means not having to deal with any of the worst parts of office politics. (E.g. de facto stack ranking, non-merit-based favoritism jockying, office management politics, dysfunctional management priorities, waiting for someone to die / retire for a promotion, etc)
When you land in a role that has no finish line, it kind of removes the benefit of being a consultant.