I'm a bit short on time for a full reply, but;
You can delete specific program instances from a subscription so they won't be recorded. So if you allowed repeats, then went through the Guide, highlighted the repeat you didn't want, press Enter/OK, select Cancel Recording, confirm with a yes. The red dot on the program will change to a white dot, and that repeat won't be recorded. A bit of work to go through the Guide to do this, but possible.
Even easier, you can do the same thing just about anywhere where the recording of that program in visible. So via the "To Be Recorded" list for example, or by using the Standard View display of the Program Guide, plus the search function (top right corner), to make it easy to find the programs, and then Cancel the ones you don't want. i.e. Display "All Programs" in the Television view in Standard View. Select the channels you wish to search, where hockey may be played. Ctrl-Click to select multiple channels, or just select "All Channels". Then use the search function to search for "NHL Hockey". You will be able to see the program Name and Description, so if that is enough to determine if it is a repeat, you can Cancel a repeat recording there. Just select the program and the "Cancel Recording" button appears.
I have started to play with a custom view of the EPG data. If you have learned how to create custom views, you can create one and restrict it to viewing data in the "Television Guide" database. To do so "Set the rules for display" with a "Modify Results" rule of "Limit database to" = "Television Guide".
Now, I haven't really done much testing, so I can't say how useful that is. But, when I made a change to a value in the view, the change stuck and was reflected in the Guide. There is a field called "Rerun", which may well be the field the MC sets when a repeat is detected. Some of the programs in my view have "Rerun" set to "1", which I suspect means that they are repeats. Maybe, if that field has no value in an imported EPG data set, any change to that field value may survive future EPG data loads? I don't know. Haven't tested. There doesn't appear to be a "previously-shown" field or equivalent in the, but I'm pretty sure that if such a field exists in the EPG XML file, then the "Rerun" field is set.
Yaobing has explained how the repeat identification works previously, but he may need to do it again. I don't have the explanation at hand.
BTW, MC now keeps the XMLTV file for 24 hours after processing, before it is deleted. Yaobing posted on that change a while back. Again, have a search on he forum, or your hard disk. I can't remember what the file name is though.
Anyway, enough for now. That should give you a lot to look at. Enjoy!