"There's a very easy way to solve this problem for websites, and that is to host the ads from the main site."
It's not that simple. Almost all display ads are served through 3rd party ad servers like Doubleclick, Zedo, etc. because advertisers want the ability to:
- Control and change what ads they are serving without contacting hundreds or thousands of different site owners and coordinating mass creative changes. This is why ad networks exist. This includes controlling which creative gets served and optimizing for serving the best creative (ad + copy) when they figure things out.
- Account for frequency and reach correctly. By having a 3rd party serve your ads, you have insight across the web by "user" so you can cap the frequency. I don't want to hit you with 100 impressions per day so having global knowledge of how many times you've seen the ad helps eliminate waste.
- Account for impression based conversions / goals. You can correlate goal conversions on your own site with impressions and clicks so you can see if people who saw your ads but did not click behave differently than people who did click. This also gives you the ability to do multi-channel attribution so you can detect if impressions impact your SEM campaigns or do they increase direct-type-in traffic to your site, etc.