Emacs can run external processes asynchronously. It is true that Emacs locks up while updating packages but it is actually not while downloading or unpacking them! It locks up while byte-compiling them. :)
I remember I looked into a lockup I was experiencing (this was a few years a ago so I forget the mode). Turns out emacs was writing to disk every so often and this was noticeably causing stutters in the main thread.
> would never describe it as snappy. The entire thing is single threaded so the UI locks up at the slightest provocation
This part seems to be about the User eXperience. (which I agree with, but elisp can start child processes and wait for the results asynchronously, so this is the fault of whoever wrote the code https://www.gnu.org/software/emacs/manual/html_node/elisp/Ou... )
I've been using Emacs for over 25 years, and I cannot agree at all with the sentiment that the UI locks up frequently. I mean, it depends on exactly what you do with the program, but for me, the UI is always responsive.