Sometimes a donor's payment succeeds, but we crash trying to send the donation message to the queue. We should never make the donor think they need to try again if we've actually charged them. Distinguish between pre- and post-payment errors and don't send donors to the fail page if we might have taken their money.
Re-opening this because we're getting a lot of session timeouts lately: T149139
For Paypal classic, AstroPay, and Adyen, the payment is already going through by the time the donor gets to the result switcher. Many of these donors with session timeouts go on to make duplicate donations.
Instead of always showing the fail page on dead sessions with those processors, we should always show the thank you page.