Here's another idea; why not use torrents and local peer discovery? You can have a central switch (with DHCP service and the seeders) connected to auxiliary switches (with leeches/peers). Make a few torrents for each directory and let people share. That should reduce the strain on the network. You can also use QoS and packet dropping to ensure that game connections are treated as higher priority than torrent connections. The system can be very fast if the seeds use super-seeding.