Drafting a player costs nothing more than the draft pick. Giving a player a contract ties up one of your 50 contract spots for three years. Contracts also cost money.
The later a player is drafted, the lower his chances are of ever turning pro. Now, you're talking about giving a guaranteed contract to a player who wasn't even good enough to be a 7th round pick a couple of months earlier.
You have to be really confident that this player is going to develop into something worthwhile to tie up a contract spot for 3 years (which is actually probably 5 years if he goes back to junior for another 2). Teams just aren't willing to take that risk on a player who will likely be available in the late rounds of the draft the next year anyway.
The Kings took the gamble with Martin Jones, and he went on to take the Hitmen to the Memorial Cup the following season. That time it paid off (although, he's no longer a King).
The Oilers tried to sign Vladimir Tkachev two years ago, but the NHL blocked it because he had played a few games in Russia the prior season before coming to the QMJHL. The NHL saved the Oilers in that situation (ain't that the story of the last decade?) and Tkachev is now playing in the KHL.
The Flames did this with Nick Schneider last year, and the jury is still out on whether or not it was a smart move. They're going to have to find somewhere for him to play next season with McDonald and McCollum under contract and Gillies and Rittich as pending RFAs (which means they'll likely be re-signed).
Turn up the good, turn down the suck!