This is the way recursive adding is structured:
1) there is a main GUI thread in which all operations that use the GUI toolkit must happen. This thread loops delivering events to the various GUI widgets
2) A progress dialog is opened in the main thread and a new thread is spawned to do the adding of books
3) The new thread first recursively finds all ebooks and creates a list of them
4) For each ebook, metadata is read. unfortunately because metadata reading sometimes requires GUI operations, it has to happen in the main GUI thread, this is the Reading metadata phase and is when the UI should be the least responsive
5) Once all metadata is read, the metadata + actual files are added to the library in the worker thread (technically, because sqlite in python is not thread safe actualt database modifications happen in yet another "database access" thread). This phase is the adding books to database phase
If all of windows is slowing down during any of these phases, it just means that Windows' kernel scheduler really sucks.
Note that you can avoid all this mess with threads by just using the command line
Code:
calibredb add --help
Since there far less context switching going on it should be significantly faster than adding via the GUI