I think I found a solution for this. I thought maybe something was corrupted in the timers, so I decided to try deleting them all and re-creating them. (I had about 40.)
Deleting them caused another crash and reboot, which I expected. The first time I tried to create a new timer (to start putting all my old ones back) it crashed again, so I guess it wasn't the timers themselves.
Then I figured it must be the program guide data that was corrupted. I remembered reading somewhere else that doing a check switch will usually cause the receiver to reload the guide data, so I did a check switch and it did sit there for almost 10 minutes fetching new guide data.
Then I proceeded to put back all my timers and not a single crash. Tried using skip/restore and no problems with that either. So I suspect that just forcing a reload of the program data by doing a check switch would have cured the problem without the hassle of having to re-add all my timers.