you could possibly use net::daemon or other. an outline of how to write a preforking daemon http://www.petercooper.co.uk/archives/000702.html. that talks about http daemon, just take the prefork bits you want. you can make your starting daemon / parent start from init.d to make it resilient.
maybe if you elaborate a bit more about the scheduling requirements, someone may be able to offer more help.
i don't have any understanding of what your pre-forked processed are supposed to do..but a number of pre-forked processes that run for hours doesn't sound like a reasonable setup to start with. perhaps this setup could benefit from a shift in approach? otherwise just run a cluster all on the same box or distributed?
the hardest line to type correctly is: stty erase ^H