Hello,
A worn serpentine belt can do this as well. If the tensioner is all the way out replace the belt first, they can slip on the pulley and not squeal and you never know its the issue until you check the tensioner. Always start with the external first. If you can wire jump the fan so it stays on all the time and see what happens. Just pull the leads to the fan thermostat and put a jumper in there that makes the connection. Another option could be the thermostat. I know you said you replaced it a year ago but it could be the issue. I would think it if were the radiator it would have issues at all speeds as that means there is not enough flow in the radiator itself to move enough water so no mater how much air you get on it it will not cool the motor. If it is cool at highway and not idle you have an air on the radiator issue or low on fluid.
Let us know what it is. I am curious.
Thanks
Doug