Once I've been running for awhile, it tends to keep going without freezing
That makes a difference how you troubleshoot this, possibly your fault is temperature related. Diagnosing intermittent temperature related problems can be painful and a lot of people instead resort to module swapping which for you could mean costly trial and error.
In simple terms here's my usual approach to this type of fault, I hope it helps you:
Reduce the system to an absolute bare minimum both in terms of hardware and software and be able to reproduce the fault - I think you have done some/all of this already.
Make sure first of all it's not a mechanical problem (possibly a microscopically small bad component connection) by tapping the system board/HDD etc. with a screwdriver handle. See if you can introduce the fault this way and while using common sense where you 'tap' don't be shy
Wiggle cables too plus anything else that's connected.
Moving on....
Use a hair dryer with a home made 'funnel' to give a narrow (more specific) hot air stream or some other heat source and with the aid of a piece of card (as a heat shield) warm isolated parts of the system and note the effect. Similiarly, using a can of freezer spray (available from electronics shops) chill parts of the system and note the effect.
Hopefully you will see a failure pattern emerge and begin to narrow down where the problem lies. What is vital is that you demonstrate to yourself a good degree of repeatability of fault present / fault not present before you can be certain of your findings.