The same crud that plugs the oil cooler can plug a heater core. Maybe at idle you are not moving enough water through the core. You can try removing both heater hoses and GENTLY backflushing the core with a water hose. Invest in a couple of pinch off pliers to keep from losing too much coolant from the heater hoses and stick an extra piece of hose on the core so that you are not dumping coolant/water/goo all over your engine. Try to catch it in a bucket so that you can see what kind of nasty comes out. Post it if this works.
Ill go a couple steps further.
Typically when i get a truck that has bad head gaskets, you can go out romp the hell out of it, depending on how bad they are, the truck can lack power, emit smoke, and the temp gauge never gets more than 1/8th of an inch off of C and the heater is blowing ambient air or cool air. Can also have erratic heat.
The vacuum hose to the heater control valve is a joke really... Ive seen where someone has been in there before me left it unplugged and either plugged it onto the heater core box, or left it on top of a very hot intake/valve cover and it melt shut, that really doesnt have an effect on the operation of the heater core... I believe that was for EATC units only aiding in keeping the temperature in the cabin regulated to what temp you wanted it set to...
Without it it sticks wide open and has full flow going through the heater core.
Now if you suspect a failed egr cooler, remove the egr valve does it look gummy and wet in the intake? Do you notice it puking only when you run it hard or does it puke no matter what? If its puking only when you run it hard-head gaskets. If it pukes when you puss foot or hammer down-EGR cooler.
Best way to find out make my gauge up and test it. if it builds pressure from Idle+ egr cooler. Builds pressure above 17psi when held wide open Head gaskets.