Well, if you use IsGenuineEx the next time the user starts your app (if they're connected to the internet), then it will recheck the activation with the servers even if it's way past the grace period.
The only caveat is that if IsGenuineEx fails to contact the servers then it won't try again for the next 5 hours.
What you need to do is modify your code so that if IsGenuineEx fails you call IsActivated to see if there's a valid activation of the computer. And if so, show a prompt to the customer that says something along the lines of "You need to reverify with the activation servers now before you can continue to use AppX". And have "Recheck now" and "Exit app" buttons. The "recheck now" button will call the IsGenuine function.
Does that make sense?