OK, solved...ish. The fan clutch was bad - and that improved things. But it wasn't 100%, as it was still *barely* getting above the bottom line on the temperature gauge.
And it turned out: The engine simply wasn't getting that hot.
Why? Coolant was getting around the thermostat, so it was like having a slightly open thermostat open all the time. Tried several thermostats, they (including Motocraft) all sealed about as well.
To corect this, I first tried sealing the thermostat in the thermostat housing better, using water pump gasket making stuff. Using my Bluetooth ODB2 reader / Torque app, I could see my coolant temperature was range while driving was about 15 degrees higher, and the temperature needle was also showing somewhat higher.
Second, for testing, I blocked off about 90% of my radiator (10% being a hole in the middle cut out, roughly in front of where the fan clutch is). I blocked it off with black foam board from WalMart, attached directly to the radiator with two zip ties. Driving - temperature via bluetooth ODB2 reader got all the way up to 231 eventually, and the temperature needle actually went above the middle of the gauge.
So - it was not the heater core, temperature sending unit, gauge, or water pump impellers. The coolant just wasn't getting very hot.
Cut out a larger hole - tested. Cut out a slightly larger hole - tested. In the last test, I drove around for about 45 minutes on a cool night, and the engine temp that varied between 191-201. Seems like a good place to leave things for now. In all of this - the temperature gauge behaved perfectly.
For the last step, I have a Four Seasons thermostat housing on the way. Perhaps being new and smooth it will make a better seal with a thermostat. Or maybe it'll just be slightly better than the Motocraft original. If it does - great, that'll go in the car, and some or all of the foam board will come off. If it doesn't - at least I know, and it'll go on Ebay.