There is a generational shift at work here, at least in the US.
The elder generations are more likely to prefer you're welcome over no problem. I once spoke to a retired restaurant manager, for example, who talked about lecturing his waitstaff not to say no problem to customers. "Of course it's no problem -- it's your job!" he said. In his view, saying no problem was meaningless at best, and at worst impolite.
However, attitudes and expectations have shifted, and there is a subtle difference in how the younger generations perceive these phrases. You're welcome is no longer seen as a default, neutral response to being thanked. Instead, it carries undertones of one or both of:
- Insincerity, because you're welcome is what you say when you don't really mean it
- Haughtiness, because you're welcome is what you say when they should be grateful
By contrast, no problem is an honest assurance that no lasting trouble was caused, that the matter is now over, that the thanker can go on their way without feeling indebted to you at all.
To people who perceive these phrases similarly, a sincere no problem is more polite than you're welcome in most situations.
The trouble, of course, is that you may encounter people who perceive no problem as dismissive or disingenuous, like the restaurant manager above, or even some of the other answers to this question. Individual opinions are of course impossible to predict with certainty, but for the most part, I've had success tailoring my responses according to the person's age.
For people a generation or two above me, I will sometimes say you're welcome, because I know they will perceive it as polite. But for my peers, who I can be reasonably sure will interpret these phrases like I do (even if they don't consciously realize it), I will usually say no problem.