So, here's an idea: why not let others (even competitors) bid on individual events. This could work from either the IOC doing to brokering or even NBC itself.
So, for example, if another network wanted to broadcast the USA/Canada hockey game, they could have bid for the rights to show either that game, or all of hockey. I'm sure that would be worth something. Why should a large part of the country have to miss out on a great event, just because NBC decided to show ice dancing?
Split the games up into smaller biddable packages, and I'm sure you'd end up with as much, if not more, revenue for the IOC, and more people could get to see a greater variety of events. Imagine if ABC/CBS/NBC/Fox/ESPN were all showing a part of the Olympics? Wouldn't this be more in the spirit? You'd get a greater variety of events and more depth in individual events.