Separate crawlers, indexers and search websites. One search website could go to several indexers. One indexer could get info from several crawlers. In today's internet this makes so much more sense than everything being run by the same company.
For example, you could have a crawler that specializes at searching Medium.com. You could have another one that specializes in searching just computer game websites. The data from both are aggregated by indexer A and indexer B. Indexers would rank content using different algorithms.
When user opens some search website and types a query, the website pre-processes the query and sends it to both indexers. Both return the best results they can. The website then aggregates them into a single page and shows to the user.
With this system there will be competition at every level. And a startup could conceivably build a node in this infrastructure without tackling the entire thing at the same time (like you have to do right now).
You think website X has bad interface? You can build your own interface and buy information from existing indexers (which you chose).
You think you can do better job at ranking results? You can build your own indexer and sell your results to pre-existing websites.
You think some niche area of the web is ignored? You can build your own crawler and sell your results to one or several indexers.
If someone does a bad job, the next level of the system has incentives (and freedom) to drop them. This includes the consumer of search results.