BMI doesn't need fixing, it works just fine. The problem is everyone is using it wrong.
BMI was developed to be used as a tool to use the average height and average weight of a population in order to be able to study social or environmental variables that might have made those people in that population, on average, overweight or underweight. It is not meant to be used on a individual level. The individual builds of those within that population are averaged out.
This is why for a person of average build, BMI used on the individual tends to be a somewhat accurate assessment, but anyone who is of a rather slight build such as those who succeed in marathon running (coming in as underweight) or a large build like those very broad people or people with a bunch of muscle (coming in as obese) it is not accurate at all. For a large portion of the population it is not an accurate assessment of body fat, the further away you are from an average build for your height, the worse it gets.