I would imagine the current method is to attract a diverse mixture of runners, with different motives.
a) GFA and faster - competitive athletic runners - women's places are deliberately made disproportionately easier to encourage women to take part since the vast majority of runners are men - particularly amongst the faster runners.
b) Club places - better odds for keen "establishment" runners (ie club runners) who aren't so fast.
c) Charity places - less keen runners who want to do it for a charitable cause, maybe as a one-off challenge.
d) Ballot - everyone else.
The one thing that could be made fairer is to improve the odds of someone who has applied previously and failed to get a place in the ballot. A lucky s0d who won a ballot place every year for the last three years still has the same chance this year as someone who has never won, and that doesn't seem right. Some people could enter every ballot for years and never get a place. So what to do about it?
The "x" strikes and you get a guaranteed place is no longer sustainable, because too many people were getting guaranteed places. The allocation software could swing the odds in favour of people who had applied unsuccessfully previously, but that's not very transparent. I like Ron247's idea that previous consecutive unsuccessful applications means you can get multiple ballot chances.
Logistically this would be more work, and no-one argues that your odds of winning the lottery should improve with the number of times you enter in a row, but the London Marathon is something different. Some people only want or get a chance to do it once in a lifetime, and it's nice to try and be fairer with the places.