The perceived shortage of healers and tanks in any game based on the trinity is inherent. No game design will ever change that. BW could hand out free lvl 50 healers and tanks and it wouldn't help, They could give every class a free, always available, spec independent tank and healer tree and it still wouldn't help.
As long as the basic encounter mechanic is trinity-based and requires a designated tank and a designated healer, people will shy away from those roles in anonymous groups for community/social reasons, not mechanical ones. (And I stress the anon bit.. there are plenty of people willing to tank and heal for friends and guildies but not for random pugs, which is really the crux of the social issue).
The best you can do with game design is to not artificially limit players by adding unneeded barriers for someone who would otherwise be willing to take on these roles. And BW for the most part has done decently with that. But no game design will ever change the inherent scarcity of people willing to perform these tasks for abusive strangers.
This is a great point. Tanking and healing has a lot more responsibility and is generally considered "harder". Not only that, but your mistakes are more obvious and detrimental. If a DPS screws up, it usually only means he dies. If a tank or healer screw up, it is likely a wipe. Many people simply do not want that on their shoulders, no matter what the reward is.