So my son called me in a panic last night as his car was making weird noises and his overheat light was on. Headed out to see him, and besides a nearly empty radiator, he was also very low on oil (probably burned up from the overheating from little fluid). Added both, and noticed that the fluid was slowly but steadily dripping from the area near the manifold. Apparently the overheat light had been coming on for days and he had been adding coolant to turn it off, not considering something major was wrong by the fact that he was continually adding coolant (ugh!). I managed to get him running well enough to get the vehicle into another shop I use on a regular basis. My guess was a shot water pump. This was confirmed this morning by the mechanic.
While at it, I also asked them to give a stab at determining the cause of the persistent P0171 code. When running diagnostics, they found a coolant temp sensor fault code as well. Their deduction, if I understood it correctly, was that the CTS had been progressively getting worse over time, and while it hadn't triggered a fault code until now, it might have been sending incorrect temp info to the computer nonetheless, causing the computer to think the car was running warmer than it actually was. In reaction, the computer fed less less fuel than was needed, which in turn was triggering the lean code. So they replaced the CTS while replacing the water pump.
My son is up and running again and is keeping an eye on the dash. Keeping fingers crossed, even if I'm still hesitant to believe that this will be the solution. If the CEL doesn't reappear within the next 24 hours, however, I'm going to assume the mechanic was right since the P0171 code was usually triggered rather quickly (within about 5-10 minutes of driving).
Will keep everyone updated.
UPDATE: Never mind. The CEL came back. Will check this weekend to make sure it is still the P0171 code, though I suspect it is.
Oh, well, back to the old drawing board.