自分でも考えてみたんだが、
$seed = unpack "%L*", md5(join '.', gettimeofday, $$, `ps axww |gzip`);
というのはどうだろう。
実用的にはには
$seed = unpack "%L*", md5(join '.', gettimeofday);
で十分なようで、こちらのほうが相当速い。

# Time::HiRes, Digest::MD5とも perl5では標準モジュール

問題は$seedが16bit整数になることだが、、、なぜだ???