AcceptToMemoryPoolWorker takes an out-param called coins_to_uncache which it populates with any outpoints-to-be-spent that do not exist in pcoinsTip's in-memory cache.
Confusingly, we then attempt to pcoinsTip->Uncache() those outpoints if the transaction can't be added to the mempool. But we only added those outpoints to coins_to_uncache if they didn't exist in pcoinsTip's cache... so this whole parameter and process seems useless. Maybe I'm missing something?