The idea is good, but it allows to inflate the shares amount by 0.3%-1.5% (depending on the number of long polling clients) with stale shares.
Another way to defeat this system is to declare the block invalid or do not show the block (pretend, that it wasn't solved).
at least this way, users can clearly see they're getting ripped off. Normally, a cheating pool operator can blame the low income on "bad luck".