I think we may have a winner! I hooked up the hardware (arrived this morning) and ran a test. After 30 minutes the board crashed.
I took the other shields off and then probed all the serial points. Pin 1 & 2 (TX & RX) show nothing. I then (very carefully) probed the USB SEND/RECEIVE data points before the ATMEL 16U2. Nothing... I restarted the PC and probed these same points and data is clearly being transmitted.
This means that the failure is occurring upstream (USB hub or PC). I plugged in the Arduino into it's own USB port and not through the USB 3.0 hub and now I'm running an extended test to see if it happens again. Fingers crossed.
I wouldn't say that the problem is solved if it ends up being the USB hub, but at least the issue has been located.
EDIT: Well it crashed again, this time plugged into the back of the Surface Pro Docking station USB 2.0 port. The bad news is that also appears to be a hub and the computer doesn't have any more USB ports. I'm going to see if I still see the problem when I remove the custom 5V shield I made...