Update on my cam rattle:
I confirmed the intake cam wheel was indeed separating and had play in the center. Since I was already planning to replace the seals on the intake and exhaust cam wheels, I decided to order both wheels and a new timing belt. Once all of the parts arrived, I picked up a cordless impact wrench from Harbor Freight (what a godsend!). Lined everything up to TDC on #4 cylinder, and before removing the belt, I put the car in 5th gear and tackled the bolts on the intake and exhaust wheels. Both loosened without issue and the cams barely moved in the process.
Just to be safe, I snugged the bolts back on by finger and reset back to TDC before taking the belt off. Then I removed the belt and popped off the intake and exhaust wheels. Big thanks to BenjamminsFiat for his detailed explanation on replacing the timing belt and cam seals. I was able to pop out the old seals using a screwdriver (yes, you do destroy the seals getting them out). Then installed the new seals by coating them in oil and tapping them in using my 38mm socket and a hammer.
Once the seals were in place, I pulled the new cam wheels out of the box, and ran into my first problem. Neither wheel had an A or S mark on them to tell me which was the intake and which the exhaust. So I used the old wheels to help me figure it out. If you place the wheel face down with the dowel hole pointing at 12 o'clock, the timing mark on your intake wheel will be between 12 and 1 o'clock. The exhaust wheel will have the timing mark between 11 and 12 o'clock.
I then installed the new wheels and tightened with my impact wrench. Re-aligned my pointers as they had moved slightly while tightening the wheels, and then installed my new timing belt. Re-installed radiator, hoses, etc and eagerly started the engine.
The car started, but was running horribly. I was able to keep it running, but only by rotating the distributor significantly towards the #2 plug. Good news was my rattle was gone, but the timing was completely off. I thought I had been very careful to keep everything set to TDC, but I decided to try re-setting the timing belt again. I didn't want to pull the radiator out yet again, so it was a royal pain to re-set the belt, but I got it done. Timing was still horrible, and I was confident I had everything aligned to the correct marks, so I decided to quit for the night and re-think the issue.
I decided I must have done something wrong when installing the new cam wheels (perhaps I had reversed them after all?), so a few days later I tore out the radiator yet again and removed the new wheels to have a closer look at them. This time, I compared them very closely to the old wheels. I had definitely identified the correct intake and exhaust wheels, but when I looked more closely, I noticed that the timing pointer on the new exhaust wheel was in a different position relative to the dowel hole. There was probably a 10 degree difference in position between the old wheel and the new wheel. There was really nothing wrong with the old exhaust wheel, so I put it back on the car with the new intake wheel. Re-installed the belt, radiator, etc and started the engine. Voila! Back to running condition, and no rattle!!
I'm really curious as to what exhaust wheel I received vs what I ordered, but the big lesson I've learned is to really compare old parts with new in these situations before installing them.
I had also pulled the cam covers off as I needed to replace the gaskets, and I've since realized that the cam lobes on #4 cylinder should align perfectly with the timing marks on the wheels. If they don't, you've got problems
