The short answer: apparently it’s a bug - server, time zones, and stuff like that.
The fetch after page loads option does not exist for dynamic pages/datasets, because of the reason how Dynamic Pages work.
When a user goes to mysite.com/my-dp-prefix/my-item the only way to know if the page exists is to actually go and check if the data in fact exists. So, that’s what happens. When the viewer gets the request to the page backed by a router (Velo custom router, Data Dynamic Page router, Stores products router, etc.) it directly goes to the service to ask what should the response be (404 - if no item, 419 if user does not have permissions, actual data to display if the sites exists, etc.). So, with a Dynamic Dataset we always have the data.
One possible solution to your problem is bit of a hack, but it should work…
Hide the relevant fields as default, and then with code, show the elements when the browser renders.
Meanwhile, the Data group, and the Server rendering group are now aware of the issue and are looking into it.
Interesting problem - thanks for pointing it out.