I would also say that throwing x% and hiring again does not work well. The pool you are hiring from is people that are not happy somewhere else. You are not getting a 90% chance of finding a "good" person.
You were on the ground, which to me implies that you had a local view of the rate. In your area the observed rate of mishires apparently was around 10-20%. If you were in another team/part of the org you might have thought 50% or 0%.
My guess is that HR does exactly this sort of thing. Someone did a study once and averaged numbers that were obtained 'somehow' and that is then simply applied.
Like stack ranking. Everything is a normal distribution, right?
If you ask me: What large orgs are not good at is doing what actually makes sense. It's too much work and there is so much that could go wrong anyway. The way out are blanket policies implemented by drones, bean counters, the odd psychopath etc.
Now like my earlier sibling mentions, just because someone isn't a top performer at their current job at the current time doesn't mean they can't be great in another area or can learn. I have (and had) a bunch of people on my teams that were/are not senior people but they have a smart brain on their shoulders, are inquisitive and learn. Sure they don't know our stack fully, they don't have the exact same opinion on how to write code etc. but they are able to learn and adjust and maybe teach us where our customs aren't the best as well. And we teach them too.
I'm speaking of practices like at large banks where people have been hiding doing nothing but being on Facebook all day for 10 years and all that has happened is that every project manager tries to avoid getting these people assigned to their projects.