Personally, I’d just start generating temporal IDs for all content (user or ad) so there was no way to know what the stream contained w/o something prohibitively expensive on the client side. Permalinks, since they’re necessary would just redirects (to a temporal URL).
A temporal URL here uses different random looking values for the each user rather than a fixed one (like a URL shorter), and encode a validity window (not before/after).
The core idea here being that the code in the app doesn’t know the difference between ads and user content, which would make it very difficult for any intermediary to do so. And, if if they did the URL for the “real” content wouldn’t work until the time to play the ad had passed - so what’d be the point in bothering?
Like others have said - ya just have to pay for the things you value. No shame in being thrifty, but as I learned from my first employer: pick great suppliers and never force them out of business.