The problem here is that they want a candidate that is already perfect for the job and can jump straight in, and are unwilling to do any sort of training. Hence they let a position stay open for months out of irrational fear of spending a few weeks on training a smart but imperfect candidate.
edit: also, if there's really a 10x difference in productivity between the worst and the best programmers, isn't a truly great programmer theoretically worth more like 300-400k a year, rather than 150k?
Why should they spend time training? Isn't increasing the money on the table enough motivation for people to train themselves on whatever skillset is required and apply for the position?
Part, if not whole, of the truth is that the learn-unlearn-learn cycle in itself is a skill. People who posses that skill acquire new skillsets and stay relevant; people who don't have to wait to be trained.