Code:
new impulse = GetEntData(client, Prop_Data, "m_nImpulse")
Should return the clients current impulse value. I'm not sure if you can use this to block impulse commands.
Try maybe using the 'OnGameFrame()' forward to check clients current impulse setting and set it to 0 if necessary?
Looking at the SDK the impulse processing seems to check this value for what to use but you need to zero it between when the value gets updated from the client and when the server processes it.
If OnGameFrame doesn't have any effect you could probably file a feature request asking for a new hooking option.