For any given search term there are millions of hits
Of those hits, only the first 20 or so in a given ranking will ever be seen
This renders a huge amount of the internet invisible and a huge amount of indexing/linking moot
At present google uses what sounds like a very complex mix of signals about linking, reputation, novelty etc which it constantly tweaks, and delivers a relatively stable ranking which guarantees that those with deep pockets will win the game of ranking highest simply by buying top position or buying authority in various ways (sponsored blogs, buying authoritative domains, content farms etc).
Another approach would be to constantly inject random search results for a given term into results, and use solely reader reactions to results to rank them (registered user voting, do they come back to search results or not, sites chosen as high quality by this user, that sort of signal). So always have some randomly chosen results to guarantee mixing, and always include some degree of user input to give better and more relevant results chosen by humans. I think you could build good results like this, while completely ignoring any sort of complex ranking algorithm which is both too stable, too prone to gaming, and in conflict with the revenue stream of ads. Obviously you'd have to be careful about which users you listened to, but that is a solvable problem if you can persuade people to register to get better results.
It's definitely well past time for a few serious non-corporate competitors to google to emerge, if only to keep Google honest.