The problem is that "threads" are supposed to be a solution to dividing work.
Yes, but it's one of many solutions, and certainly not the best in every case. Threads come with their own set of problems, after all. They're no panacea. It's your job to understand the benefits and drawbacks of threads, and alternative solutions, and pick the best approach for your project. As threads are not an option in JS, it's a great opportunity for you to explore various alternative approaches. Tossing up your hands and saying "I must lock the UI!" is silly, particularly when it's clear that other applications don't seem to share that problem.
Lets face it: If your code locks the UI, you have a serious problem with your code! Go do some reading about asynchronous programming and event-driven programming. You'll find it quite helpful. Your users will thank you as well.