Well, it turns out that the "problem" is caused by a random check that it makes. The curious thing is that nothing about this check was changed from 3.02 -> 3.13 - did anyone see this bug in 3.02?
Basically, what happens is when a unit is "initialized", it is assigned a random number (they call it a "birthmark"). When it's deciding what an AI worker should do, it checks that "birthmark" to see if it's divisible evenly by 3. If it is, then the worker will start building railroads (assuming there's nothing better to do). If it's not divisible evenly by 3, then the worker won't try to build railroads. Which means the worker will idle.
I believe this was done deliberately to ensure that there were always AI workers on hand, if something needed building in a hurry. For example, if an AI pasture was destroyed, there would be a pool of AI workers ready to rebuild it immediately. However, I'm not sure that maintaining idle workers is preferable to having to wait a few turns before having one free to work on a new project. So unless there's any objections, I'll remove the "divisible by 3" check, so that all available workers (with nothing better to do, remember) will work on railroads.
I'm away until tomorrow morning, so the release won't be until then. Oh, and I'm still looking into the Executives situation.
Bh