Did you try nostr-wasm? It improves things a little.
It also may make sense to delay signature verification a little and do it after everything has been loaded.
I'm skeptical of Service Workers, I feel like they're overpromising (just like most of the "web" "features"). Snort at some point got the UI entirely frozen and I couldn't even close the tab, then on Chrome's task manager it said they had a service worker at 100 CPU usage for many minutes and I don't think there was an infinite loop bug there. I had also done something similar in Branle ages ago and it didn't help anything, in fact I think it made things worse.
Service workers is still really depending on the script.
Not yet. I'll try it.
That may well be true.