This is a kind of transaction security policy where user is restricted to do certain things based on the action they perform on the org
This type of situation is very well handled by TransactionSecurity policies
Have read this salesforce developer guide, it has detailed information and explanation to implement.
For your use case, you will have to implement a ...
Your query for Campaign Members should be in the execute method. I do believe that where you put it means it would run that query only when you first schedule the class, as opposed to every time it runs.