It can still be done. You just need to track the current period & round number yourself, and use those instead of the built-in .round_number. Make field on the group like:
current_period = models.IntegerField()
round_in_period = models.IntegerField()
Then in each round, you decide if the period is finished. If yes, then increment the field by 1. (You can also store current_period as a participant field.)
Instead of .in_all_rounds(), you could use a function like this:
def in_all_period_rounds(group):
current_round = group.round_number
first_round_in_period = group.round_number - group.round_in_period + 1)
return group.in_rounds(first_round_in_period, current_round)