I think this would be pretty easy to do with Linux's tuntap device: a userland interface to ethernet interfaces.
This allows you to use a filehandle (/dev/tunX) to write raw packets to the wire.
You could have a Perl daemon that creates/maintains several nodes on your network, each listening on a separate IP..or something :)
Relevant dox can be found in /usr/src/linux/Documentation/network/tuntap.txt