I think that the best kind of control for the doors, if you could tune it right, would be a repeater that consists of a goblin running along a corridor with pressure plates at intervals, with all the pressure plates attached to all the doors. You'd place the plates such that the "off" signal of each plate came exactly 10 frames after the "on" signal of the next plate, which would leave the doors open for exactly 10 frames out of every 100. (You could use some other number, but 10 is easy if you're using a no-agility goblin, and 20 is too long, since bolts have about range 20 and move exactly one tile per frame).
The main problem is that you can't, as far as I know, convince a goblin to run in a loop without taking time to rethink its route occasionally, which would throw off the timing.
EDIT: Alright, I set one up, although it's more a proof-of-concept than anything - it turns out that goblins take longer when turning tight corners, which made the doors end up opening for only 1-6 frames half the time, so I'm not getting many bolts fired. I'm going to build another one with long straight corridors and three times the door-opening rate (there's a simple way to do this). On the plus side, it turns out that you can trick a goblin into running around a loop and only rethinking its route once every time around, and my rethinking-the-route glue worked fine (that is, I allocated two drawbridges in front of the doors and made sure they were up during the time at the end of the loop where the goblin leaves the door open for 90 frames in a row.)