One thing that could be done is to look at the difference in GP between the match (since there will be some) and use that as a GP modifier for the next match.
So say your participating players have a GP of 100M, and you get matched against a guild with 105M of participating players. On the next TW, your participating players have improved a bit and now have 102M. But you get a modifier of (-5M GP) because of the previous war's imbalance (100-105), so 97M (102-5) is used as the GP to match against. The other guild would have a +5M GP when matching (so 105+5 or 110M). So then you might get matched against a guild of 99M, while the other guild might get matched against a 109M guild. The real, unadjusted GP of this match is used to determine the next modifier, and so on. There could be some sanity checks so that this doesn't affect your matching GP by more than +/-10%.
This prevents the situation where your guild gets unlucky and is constantly matched against a higher GP guild, and also the situation where your guild get a streak of matches against lower opponents.