It could be an indexer going berserk. Are your indexers set on 'update on save' or 'update on schedule'. When they're set to 'update on save' try switching them to 'update on schedule'. Otherwise Magento starts reindexing your category/product relations when you're saving a category.
Another bottleneck might be the product url rewrites. Magento creates a lot of URL's, especially when products are set in multiple categories. To know if that's the case, check in your database your active processes when the server is crunching numbers on save.
A third option could be to increase the timeout or php memory limit. But I have to agree with Anthony Cicchelli: 20.000 products isn't that much. Any decent development or production server should be able to handle that with ease. Another attempt is to use a tool like xdebug to see what classes are clogging up your memory, or use the built-in profiler and/or check the log files.