I got an answer to this from the KVR forums. It worked! I did both things suggested. I’ll just paste the info here for future reference:
I've heard of this behavior before. It was usually either a permissions issue related to the AudioUnits cache or some old Waves waveshells not scanning correctly, so Logic gets stuck in a loop rescannning them on every launch. I would check the caches folder:
There should be a decently sized com.apple.audiounits.cache file in there. If there isn't or it's 0kb, then maybe something is preventing it from being written. Try deleting the whole AudioUnitCache folder and let Logic recreate it. Maybe that will fix it. Also check ~/Library/Audio/Plug-Ins/Components to see if there are multiple waveshells present, which can sometimes clash with each other. Over the years I've had to run the Waves AU reg utility to fix issues with their plugins. It used to be found in the Applications/Waves/Waveshells folder.