I don’t know if textures can be loaded in a separate worker thread and passed to the main thread once they are created… I think that would be the only way to avoid hiccups on the main thread.
Note that the problem is not the loading of the texture itself as it is done by the browser in separate native threads but the creation of the texture object once it is done, and maybe the loading into the WebGL layer / GPU.
This thread can also help: Texture loading blocks thread - #2 by Deltakosh