Further diagnosis of the ECM/ECU
I have likely further isolated the problem to the speed sensor processing in the ECM. I disconnected the speed sensor wire directly at the ECM, and the problem is solved. Speedo on dash works and other outputs work when disconnected downstream. No hesitation or -25% short term fuel trim on Bank 2 and truck runs perfectly on the highway. Unfortunately, with the speed sensor disconnected, it does not always hold idle when decelerating to a stop and occasionally the RPMs drop to zero. So, I need to fix the root cause of the problem - probably inside the ECU
Based on Spike's recommendation I pulled the ECM out of the engine bay, and it was a mess - see the pictures. There was extensive corrosion on the outside, and extensive corrosion and water marks on the housing on the inside. There was loose rust and corrosion flying around inside amongst the circuit boards. There was also one mystery circular, corroded metal disc floating around. The circuit boards looked ok, but you can't tell what components are messed up.
I have ordered a new (used) ECM model number ERR6355 from Rover Cannibal in Oklahoma and will install to see how if she runs. Looks like I will need to have the sync done with Testbook or Autologic to connect to the alarm/Immobilizer on this GEMS engine.
After cleaning this up, resealing and reinstalling,the problem persists...it was worth a try.
Here are the pictures:
Back of one of the two circuit boards
Note the rust bits flying around
Strange metal disc flying around - right side
Heavy corrosion on lower right side - note that this is the lowest corner when the ECM is angled down in the engine bay and it looks like it may have been holding water
Back of the second circuit board - note the pile of corrosion and rust bits sitting at the bottom