What we’ve been throwing around as an idea for this sort of thing is a bit of a different approach. I’m not sure if it would totally cover your specific case, but the idea is that we’d extend the ability of setting an egress pool on a scheduled queue to being able to set a prioritized, ordered list of pools. Then the source assignment logic would try to obtain a working non-suspended source from the first pool until there are no options remaining, before trying the next one in the list and so on.
With that facility in place, you’d configure TSA rules to suspend the source based on the appropriate response from the server.
we’ve been avoiding this sort of thing so far as it will double the IO pressure on a failed message send, by also requiring an additional write to the meta spool each time. If we were to add this, we’d need to make it opt-in.