I may have found a solution, but if there's someone else around who has the same problem, please check if what I explain here is applicable to her/his situation as well.
I had a look at Cybersyn global variable, as explained here: here, i.e. running the command:
/c __cybersyn__ log(serpent.dump(global))
and the variable to_refuelers had seven entries, exactly seven like the number of my refuelling stations. This made me think that as a consequence of a bug, Cybersyn thinks all refueler stations are occupied, so it doesn't send other trains to refuel. To make a long story short, I went to a refuelling station, then deleted and recreated the train stop. Immediately all trains in need of fuel came to this stop. So I proceeded replacing the other refuel train stops, and now things are working again.
BTW, I grew tired of looking for all locos that ran out of fuel to fill them again, so I developed this microscript to achieve this goal (beware, it will disable further achievements):
/c for _, loco in pairs(game.player.surface.find_entities_filtered{type="locomotive"}) do
if loco.burner.inventory.is_empty() then
loco.burner.inventory.insert({name="solid-carbon", count=40})
end
end
Of course, you need to use the correct fuel, or ... if you really want to cheat use nuclear fuel!!