More to the point though, if there isn't ads rendered, you can't even get accidental clicks.
The next tier down was kind of the opposite. They weren't big enough to surface things like this, and they hired agencies for most of their ad spend. When focusing on the top of the funnel, there's this strange incentive with agencies where they often get more budget to spend if they can connect that directly to eye balls. Agencies are incentivized to throw the ads up everywhere and pay well to do so. They love cost-per-impression because we could deliver a large, predictable number of eye balls in a hurry.
All that said, we put no effort into getting around ad blockers as we were serving these ads on our own site/app and we viewed fighting ad blockers as fighting our users. Our ads were served inline in HTML, but clearly identified in the HTML of the page. It took blockers a while to catch on and block them, but they eventually did.
Maybe 15 years ago multi-touch attribution was the big push but even that only adds minimal insights into how ad spend affects the behavior you're trying to measure. It helps with high-level channel attribution but it's still at best directional.
So once you reach a point when increasing spend at Meta/Google results in superlinear increases in CAC vs. spend, you eventually end up having to move those ad dollars elsewhere and over time (and a lot of money) you get an intuitive understanding of how these other mediums trickle down to the metrics that matter.
You're totally right about agencies and their perverse incentives and how that leads to sub-optimal spend allocation.
You'd be surprised at how opaque and complex ad attribution and ROAS calculation has become for the average business, and how many marketing departments are operating on high-level metrics without having an intuitive understanding of how their ads are performing. Many of them rely on the ad networks' own metrics to determine ad performance, and don't even have their own internal attribution models.