I think I saw a program called "uping" or "mping" which had more fine-grained timing controls (I think part of the MRTG suite ... could have been "fastping" too).
Two other ideas come to mind.
1. Run asynchronously. Spawn off a big bunch of pings and even if some of them take one second or more, the whole bunch will finish in one or two seconds (provided you have the CPU and bandwidth to run enough of them in parallel).
Code:
subnet=192.168.2.
for addr in `seq 1 1 255 `; do
( ping -c 1 -t 1 $subnet$addr > /dev/null && echo Found $subnet$addr ) &
done