I wrote that last comment several hours ago and forgot to click the green button.  The answer is, "Yes, I can test for what I care about rather than using an unreliable proxy."

I don't know how to tell if the SQL connection is "poisoned", but I can test for it by attempting to release the savepoint!  If I can successfully release the savepoint, then the connection isn't poisoned and the savepoint will be released (and I don't need it anymore because the block of code left the connection in a functioning state).  If I can't successfully release the savepoint, then I know the connection is poisoned, but since the savepoint didn't release I can rollback to it and then release it!