For the actual Combat Workers yes, but in this case the normal workers are so weak that they could only really take a unit two or three eras behind them, the only reason they have combat strength is to ward off animals later on (and to get xp, but that comes later). It would be close enough in almost all cases for the Industrial worker (Str 8) to call for an escort against most any contemporary unit.
Combat Workers are another animal entirely, and would need more subtle routines, I agree. However, I'm trying to do something simple here, as I know very little C++ so far.
Then yes, you could remove the canDefend() checks and have them behave as if they couldn't defend anyway. However, doing so would make them flee from animals too so doesn't that defeat the purpose of giving them strength in the first place - automations would continually break due to nearby animals and workers would flee all the way back to cities before trying again. You'd need to make the code sensitive to the difference beween random animal danger and other danger (and just flee to borders maybe for animals that are too strong to defend against).