Earlier quoted context omitted.
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. :)
Maybe it can but it sometimes doesn't. 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.
It really depends on the package, but too many fundamental packages are still operating in the main event loop.