It has been reworked for a system which will generate a maximum of 16 random numbers every 50 seconds, at the disadvantage of preferring dyes that come first in the inventory of the machine. Unfortunately I am sick at the moment, so I can't really concentrate for too long, that's why my progress is a little stale at the moment.
By the way, Greg, how do you update the facing of a machine (texture-wise). IC²'s API scrapped the methods for announcing block updates and synchronising tile entity fields. Do I have to write my own Packets now?