The obvious solution as far as the ad networks are concerned is to proxy their adverts through the website that's displaying them. A website owner signs up to adnetwork.com, installs a node/PHP/whatever app on their server, and adverts are sent to that app and relayed on to the user's browser. As the ads come from the same domain as all the other content for the website they'll be virtually impossible to block. The reason this hasn't happened in the past is because shared web hosting would have made it difficult; as more and more sites move to virtual servers it'll get easier. Eventually it'll be a one-click install from a browser when you set up Wordpress or Ghost.
This means they'll load more slowly, they'll be harder to get around, and we will have absolutely no way to see who is actually tracking us any more.
Much as I dislike adverts on websites, the alternative to the way they're sent now is far worse.