There is no real way of evading this sort of attack since its defined by the protocol itself.
The deauth packet is required for popping a client that offers the wrong challenge.
And even if the method you describe would work it would be childishly easy to defeat.
Nor do I think it would be practical for the client because eventhough fast roaming does something similar (telling the client where it should hop next) it also knocks out performance.
One would need to change the protocol itself because it simply is a 802.11x flaw by design.
Too bad there are millions of devices out there that rely on it.
There are many flaws here anyway