...why not eliminate that 4th game and play an extra cross divisional game.
If two teams are in the same division, they play each other 3 times.
A team in one division plays one team in the opposite division 3 times and the remaining team in the opposite division twice, determined by rotation or by previous season record as follows:
If two teams are in opposite divisions and finish with the same rank in the standings (or playoffs) within their respective divisions, they play each other 3 times. (i.e. first place Western team plays first place Eastern team 3 times (or have division final winners play against each other 3 times, division final losers play against each other 3 times etc., assuming no crossover)). If two teams are in opposite divisions and finish with different ranks, then they play each other only twice.
Personally, I'm not yet at the point where 4 games against one team is too many, as long as the games are spread out enough throughout the season (unlike last year's Hamilton-Winnipeg series), but others seem to be getting sick of it, so I thought I'd throw this out there.
I rejected this scheme myself a while ago when I thought that a team should play more games against in teams in its own division than they play against teams in the opposite division. But with people suggesting that we maintain divisions even with a balanced schedule, that appears not to be a concern.
(Another scheme would have 2 games between intra-divisional teams and 3 games between inter-divisional teams. Downside is that two thirds of the games played are outside a team's division. Upside is that every team plays the same number of games against teams in its own division and the same number of games against teams in the other division, unlike either the current scheme or the scheme that I described above.)