One option that you sort-of mentioned but missed: go with the static groups, but don’t let the users feel that.

In other words, show the kick/invite options to users when it does happen, but destroy and create a new group behind the scenes.

I understand the vision, but I would still have to rotate keys through different groups. It doesn't solve anything, it just gives the illusion of a clean group delete-then-rebuild