Overheating while the car is moving is not a fan problem. The fact that turning on the heater helps means the problem is in your radiator. I am surprised that the mechanics have not isolated this problem.
Have you hosed all the bugs, pet hair, and grass seed out of the radiator air fins? If the air fins are clear, the internals are plugged up. If the internals are plugged up, the only solution will be a new radiator since there is no way I know to clean these.