One can argue either way for whether it should or shouldn’t but the fact is it doesn’t.
Be careful with locks. See (OH 1.x and OH 2.x Rules DSL only] Why have my Rules stopped running? Why Thread::sleep is a bad idea.
If this rule is being called that frequently, you might be better off using JSR223 Rules which support this sort of rule better. However, you should consider only triggering the rule on charges if that is possible. If not, try the rule using Member of trigger. When you use received update with a Group item the rule gets triggered N-1 times where N in the number of members for every update.
In short, this rule is spending a while lot of time running when it didn’t need to. I see nothing in the logic that would make Member of changed inappropriate. Though Member of received update would still probably fix the original problem without the need for locks. If you have 5 members, the rule triggers and runs 4 times every time any one of the 5 members updates.