I believe the problems with pidof and daemons only arise when the daemon does such funky things as changing argv[]. For example, sendmail - pidof sendmail doesn't find anything, whereas killall does[1]. I suspect this is correctable and possibly a bug in pidof, but this is the state of affairs at the moment.
[1]pidof from sysvinit_2.76-3 --Jeff