Once the donation is in CiviCRM, we're better off deleting the pending database entry.
Looks like the PaymentsInitial consumer is correctly deleting from pending, but the pending consumer seems to never find already complete or failed payments_initial rows. Also, the log message has a random ID and should show the actual message ID.
Found a late static binding bug that might explain it (though i'd have expected exceptions). Also, this is another race condition. If payments-init is consumed before a sparse donation message is imported, we'll lose donor information. Let's just consult payments_initial for failed, and maybe contribution_tracking for completed, just to see if there's a contribution id already set.