Using Visual Studio 2008, and watching the code. It took me 4 hours to track that worker bug down to a specific cause.
Firaxis wrote the code for workers, assuming that workers always had no strength and couldn't fight. That assumption is what will cause Waiting For loops when you use units that can fight. The units work fine when the player is not at war, but when the player starts using the worker/military unit in war, it will try to build roads, then connect them to other cities; and because it's a military unit, it can find a "safe" path to a friendly city; but can't build a road because it's through enemy territory. A real non-combatant worker would be unable to find that path in the first place; which is why they work fine. (Plus, the AI doesn't send it's workers into enemy territory). Fixing the code would be a real pain, especially since Civ5 is 51 days away, and the fix is so simple...