Truth is that most organizations above a certain size have some dead weight. It is a whole lot easier to hire 5 outstanding employees than 10,000.
Firing people for mistakes just results in a culture where people look for others to blame and where people hide mistakes. So from a management perspective it is unproductuve to fire people for honest mistakes. Firing people can also be more costly than keeping them if their performance is generally acceptable. It is expensive to hire and train new employees who may in fact not be any better than the guy you fired. Further, the company may often end up paying a share for unemployment.
Now all this is not to say that people who make many mistakes shouldn't fired, at some point the cost benefit ratio turns the other way when it is apparent the person cannot do the job. But firing people is hard and requires a level of confrontation that many first line managers find difficult. So many people don't get fired until there really is no other choice.
Your problem though is that you think everyone should be in the top 15% which is simply mathmatically impossible. You need to get used to the fact that in the workplace, most of the employees will be average not great. Small companies can move the bell curve over a bit, but as the numbers get larger, it just is not possible for every hire to be a winner and it is not possible to pay the salary level that the top 15 % can ask for to everyone.
Further, there is the concept of good enough. If the company is making money and the work in generally getting done at a reasonable level of competence, then that is good enough. Not everything has to be done at the excellent level and not every type of job attracts the people capable of working at this level. And if you asked every person in the organzation who the top 15% of emplyees were, you would get a different answer from everyone and it may shock you but you would not be on that list for many of the employees simply because they are not familar with your work as you are not familar with the work of all of them. You might not be in the top 15% for people who are familar with your work. There might even be people who think you should be fired. Perspective is very differnt in different people.
Frankly what you need to do is fix your own attitude and stop looking at other people as inferior. They are better than you in some areas as you are better than them in some areas. Nobody is great at everything and what makes a great accoutant is not the same thing that makes a great sales rep.