If the light is coming on, its a TCM problem. My bet is something is actually messed up inside the TCM.
Because on 03+ trucks the tow/haul button wiring goes into the BCM, not the TCM. When you press the tow/haul button quickly, the BCM acknowledges this and sends both a signal to the instrument cluster to turn on the tow/haul light, and a data signal to the TCM to engage tow/haul mode.
If you hold the button for more than a second, the BCM recognizes this and sends (big surprise) a data signal to the IPC to turn on the OD lockout light and a data signal to the TCM to lock out OD.
The TCM is obviously getting a class 2 data signal because your PRND321 display works, trans temp gauge works, and its not throwing any codes.
Thus my educated guess that its a problem with the TCM itself, NOT any wiring in your truck.
ben