A possible solution would be to develop an adblock product which whitelisted "good" ad networks by default (I think adblock plus has this feature for google ads at least). Getting that list populated and maintaining it would be tricky but feasible.
There's also the issue of the simple time investment in curating ads. If I just somehow knew every website that depended on awful ads for the majority of their revenue, I'd happily avoid most of them, and everyone would be satisfied.
But the volume is so tremendous, an adblocker for me is surrender. I would like to support good ads and avoid/punish bad ads. But there are just so many websites, so many ads, I cannot mentally catalog it all and remember "oh right I'm ideologically avoiding site <blerp>" as I skim Google. Given that, uBlock is the only thing keeping my old laptop from collapsing under the weight of the bad ads that appear from every direction.
Actually it's a lot like spam blocking in some ways. Spam is such a voluminous problem, you are forced to implement blanket policies, leverage advanced technologies in heuristics, and maintain large networks of whitelists and blacklists, just to get on with life... that's what good ads and ad-free sites seem like, ham lost in a sea of spam.
Also, because Adblock plugins can just stop network requests from ever happening, it's actually hard to accurately measure everything. Lots of publishers also arent that technical or have large dev teams so it might seem simple to the Hacker News readers but reality is more difficult for these sites operators. Wordpress actually runs more of the big famous sites then you may be aware of, just because it's easy and doesn't take a big ops team.
Which brings up a technical challenge- there's a vendor I like who implements targeted ads that follow you around the web. The ads are extremely benign and I would want to permit them- but they are hosted on a platform. How do I permit only certain vendors on an ad platform, without allowing the entire platform...
1) the opt-out choice relies on the same tracking cookies and stuff which would be blocked by adblockers
2) not every company offers opt-out because its a gray area of regulation, especially across global regions
3) you would have to opt-out of the infinite choices you dont want, just to let in the single one you do
I think one part of the issue is that the intent isn't so clear. You'll always have people who want the content regardless, but they're a lost cause from the onset.
Rather, for the rest, those sites/publishers would be well suited to making their intentions clear; i.e. "If you aren't going to view [click?] our ads, we don't want you reading our site."
There are many sites that outright block adblock users. For all the rest, it seems odd that, if they had that implicit contract in mind, they aren't blocking adblock users. Or issuing such a statement of readership intent.
Example: PageFair was a company that measured adblock usage and also showed messages like this, until their javascript tag got on the adblock list and suddenly their entire platform because useless.
I think the bigger issue is the trusting someone to do data-collection for ads. When everything is "pay per click" or "pay per eyeball" both sides have incentive to engage in click-fraud. All these awful networks seem to be solving that issue by creating a third party who has to attract both advertisers, and affiliates, and thus shares(at least partially) the motives of both parties
This unfortunately makes the whole industry look bad and the top companies are trying their best to fight back against all these crappy formats and fraud.
At the end though, the implicit deal is that you are reading content produced by the publisher, and it's accessible for free because you're exposed to ads. If you don't like the ads, please don't read the content. That's all there is to it. You're free to vote with your traffic and show publishers that their ad setup won't be tolerated, but adblock plugins are an easy way out that helps no one in the long term.
EDIT: I can tell by the downvotes that people find this a touchy topic and would rather just install adblock then consider the realities.