In response to Jeff identifying a pattern of creating temp tables when creating mailings I have added a bypass on the getRecipients part when creating the Mailings in this job.
As a result of this I also identified that the replace api does not work as I thought it did (it creates & deletes rather than creates or updates). As a result I have replaces this with an internal function. We also use replace on addresses & emails in core - although currently only on lower traffic jobs. If we were to adopt @Ejegg's idea of doing more matching we would want to change that