There sure are millions of them, sure, but not necessarily millions of them available when you post your opening. I know because I am searching for senior Java devs for a stable, global, wealthy corporation and yet it takes months to fill positions.
Then to the expense of searching you need to add the expense of the guy having to spend at least a year on the job to really become productive, learn the system, the organization, learn the problem to be able to effectively design quality solutions, etc.
If this guy leaves in 2 years on average you have spent most of the time basically searching for him and waiting for him to warm up.
Smart and skilled people spend a bunch of time learning your problems, figuring out solutions, only to take all that knowledge and experience with them to be replaced for a green guy who will have to start mostly from scratch.