Why not use spot fleets to solve this? You can specify multiple acceptable instance types.
And so even our instance fleets were failing to provision capacity.
Unless you paid for a reservation, you're SOL.
For the past few weeks I've been having this exact problem with GPU instances, where on-demand requests would kill my spotfleet instances in the middle of a job, I'd spin up again, get killed again a few minutes later.
The only way to fix it without rewriting a bunch of stuff was to blacklist that instance type from my spotfleet requests.
It definitely wasted a bunch of my time though which seems to be increasingly more common with newer AWS APIs.