A very similar question came up on the openbsd-misc mailing list recently.
What follows is basically what I sent that person.

This is what we do to install OpenBSD on whole labs full of machines at the
University of Alberta Department of Computing Science.

1. Setup a template box. Install OpenBSD, configure it for our needs,
install additional third party software.
2. Turn on rsh and give root a .rhosts files so root on the other lab machines
will be able to access the template box.
3. Drop this script into root's home dir (we call it "copybeast"):

#!/bin/sh
#
# Call this script as ``$0 <ip of clone source> <machine's name>''
cd /
mv /tmp /otmp
ln -s /mnt/tmp /tmp
# start dumping filesystems
cd /mnt/var
rsh $1 "dump 0f - /dev/wd0h" | restore rf -
rm restoresymtable
cd /mnt/usr
rsh $1 "dump 0f - /dev/wd0g" | restore rf -
rm restoresymtable
cd /mnt
rsh $1 "dump 0f - /dev/wd0a" | restore rf -
rm restoresymtable
cd /
# change a few key files
echo $2 > /mnt/etc/myname
echo $2.cs.ualberta.ca > /mnt/var/local/qmail/control/me
echo "inet $2 255.255.255.0 NONE" > /mnt/etc/hostname.xl0
# install the boot block
echo "installing boot block"
/usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot wd0
echo "done"

4. Boot a batch (how big the batch is depends on the speed of your disks and
net) of target machine with an OpenBSD CD. Take them through the
install process until it asks for root's password (so disks will be
partitioned and net configured). Drop to command line.
5. rsh template-box-ip "cat copybeast" > copybeast; chmod 700 copybeast
6. ./copybeast template-box-ip whatever-my-name-is
7. Reboot when they are done.
8. Repeat for the next batch of machines. Obviously you now have a larger
pool of templates and can do more target machines per batch (provided your
network allows it).
9. Remove the ~root/.rhosts, turn off rsh, and do any other final securing
(eg. turning off CD booting and password protecting the BIOS) when
completely done.

Obviously the script needs to be tuned for your particular setup. You could
probably do away with the .rhosts file too. We use it because we can then
get lesser admins (not priviledged with root's password) to help.