Thinking about it, it is almost impossible to avoid flickering. Because the browser opens a tab first, then load/parse/render a page. There is a very short time between them. (I know, in this case, you mean it will flicker two times.)
For example, below is an empty new tab page. When you open a new tab, you will see a very quick flicker.
// manifest.json
"chrome_url_overrides" : {
"newtab": "newtab.html"
}
// newtab.html is empty page, just set a different background color for observation
<head><style>
body {
background-color: red;
}
</style></head>
To avoid flickering when opening a new tab,
1. Mitigating effect: set the background color to the same as the browser's (consider light and dark theme).
2. browser render a page in background for a very short time, then create a tab with this rendered page.