I know that snap-on can read/erase D2 codes but i duno if it does programming... if it does go into ECM programming and make sure it's set on 2 track, i saw once that setting went wrong by it's own for some strange reason.
"Driver demand" fault is when the voltages from the TP sensor are out of range or missing
If you are 100% certain about that used TP sensor go into live data with tester(if snapon cant you need nanocom or similar) and read the TP sensor/throttle/driver demand(or how ever the tester names them) values cos it could be a wiring issue between the sensor and the ECM and the signal doesnt get there... jiggle the wires at the sensor's plug and at the ECM's black plug too
if no joy download a free RAVE and start reading(Engine management-Description-Throtle position sensor)....if u are familiar with electrics and u have the RAVE i can tell you where to measure with voltmeter to see if the TP sensor's signal gets to the ECM or not....usually at TP sensor faults the MIL warning is on too.