With regards to skill sets, I have repeatedly found that people who engage in hacking range from skill sets of "knowing how to use a hacking kit" to "uber developer with security knowledge". There is a wide range of skills and knowledge.
However, it is practically an entry requirement for someone in the security space to view software differently than most programmers. That is defined as non-average.
In turn, I guess a security professional is more scarce than an average developer. The question is if all security professionals are hired to strenghten systems, or some of them to break it.
More to the point, hackers can be very motivated to break things in a way that the average developer is not motivated to secure them.