You can hide tabs. But I think that may still trigger a flash of the tab appearing, since I’m not sure you can immediately hide a tab after creating it.
Alternatively you can of course use fetch() to load a page if you don’t have to rely on it running some JS. And lastly, you can embed it in an iframe (in your popup, bg page or the current tab), though properly sandboxing that is a challenge.
However if you can’t use fetch() because it loads in something via JS, I’d suggest reverse engineering to the point where you use the endpoint the page uses to get the data. That’s just as volatile as DOM scraping.