Update: Last weekend I pulled the connectors from the ECU under the hood, and from the TCU under the dash. Cleaned them up with some CRC 2-26, and did not find any corrosion or dirty contacts, so I plugged everything back in. While I was doing this I had the battery disconnected. I also disconnected the DRL module while I was under there. - Cleared the codes, and took it on a test drive. Drove fine for about 15 miles, no codes, nothing. Even drove a few trips after that fine. Then on Monday I drove it to work, and now they are back, same as before. Oh joy!

So this makes me think the TCU may be flakey, even though it seems to work fine when it wants to. I have read that to replace the TCU the replacement needs to be programmed. But not sure why. Has anyone ever swapped out the TCU with a good known TCU? I ask as I have a good working TCU in my other 06, and I would like to just swap in the good one to see if that makes it happy. Then I can blow the cash on a new TCU if that is the problem. Has anyone just swapped them out between cars to test? Does anyone know why the TCU would need programming, other than to make sure it has the correct code? Will the TCU know it is in an LT model, and not an LS model?