Seems to me IOS does not work as documentation states when handling dot1x authentication. I believe the latest 12.2 IOS should not reauthenticate a client if the MAC address has not changed (with dot1x reauth disabled of course). However I have tested this and it seems the switch always sends EAPOL even if I use same PC on the same port. Is this a bug?
There's nothing that can be done about this. I'm not even sure what "MAC history" means, but if the port goes down, it's cleared anyway.
Now, I may have a workaround for you here. MAC-Auth-Bypass (MAB). MAB authenticates machines that cannot speak 1X be their MAC address. If it fails and you also have the Guest-VLAN turned on, the port will go into the Guest-VLAN anyway (to support backward compatibility). From a processing perspective, MAB is attempted after 1X, but before the Guest-VLAN (which just authorizes a port blindly).
What this means for your scenario here is that if you enable MAB, you can put a machine to sleep which will bounce the port). 802.1X will time out (since your machine is asleep). Then, MAB will kick in and initiate. However, it will be hung there until the device sends traffic, and if it's asleep it won't be sending any. This way, the port doesn't go into the Guest-VLAN when going to sleep, and you can wake the machine up from whatever VLAN is configured natively on the port.
Hope this helps,