I have a lot of
field_deleted_* tables in the database and neither
drush cr or running cron is removing them. Is it okay to just remove them from the database? How can I tell Drupal to remove them otherwise?
No, this is probably not a good idea, because there are more things that need to be removed, not only the database tables.
The deleted fields are purged by cron, but only 50 rows per run. If you want to accelerate the process, run cron more often or increase the batch size in field.settings.yml:
Instead of cron you can run
field_purge_batch() from the command line, then with a higher batch limit, for example 1000 or how many rows you have and can delete without hitting a time limit:
drush ev "field_purge_batch(1000)"