Problems Deleting Data
parser_customer_period_mo is a many-to-many relationship table?  It probably does not need id.  (Getting rid of unnecessary indexes helps at some level.)  (This may have somehow caused the lock wait timeout.)

200 similar tables -- bad design.  (But seems to be 'necessary' in this situation.)

FKs cost something, but probably that won't explain what you are seeing.

IN ( SELECT ... ) is an inefficient construct (especially in older versions of mysql), see if you can turn it into a JOIN.

OR inhibits the use of an index.  (Probably cannot improve on that.)

Change innodb_buffer_pool_size to be about 70% of available RAM.  This should cut back the I/O a lot.