Listening for disable_ts and turning off polling while locked would be a good start.
How hard would it be to use a dynamic polling rate that decays between two tunable values the longer no data is available?
What does op_active do?