You may want to have a look at customizing dnsmasq configuration file. See:
https://github.com/RMerl/asuswrt-merlin/wiki/Custom-config-files.
The idea here is that dnsmaq act as the DHCP server (as well as DNS forwarder/cache and it can also act as a PXE server). While you are somewhat limited from the Web UI (which is normal, it’s not meant for advanced configurations), you are pretty much free to do what you want once in the config file. Dnsmasq is mostly designed to manage a network of roughly 50 devices, but I see no reason why it would not support more.
You could choose to replace entirely its config file by creating the file “/jffs/configs/dnsmasq.conf” or simply append lines to it with the file “/jffs/configs/dnsmasq.conf.add”. Since you want to manage a lot of devices, I would recommend using a dhcp-hostfile. In order to do so, you would have to create a file on your device, which would contain entries in this fashion:
# PC1
<MAC ADDRESS1>,<MAC ADDRESS2>,<HOSTNAME>,<IP>
# PC2
<MAC ADDRESS>,<HOSTNAME>,<IP>
# PC3
<MAC ADDRESS1>,<MAC ADDRESS2>,<IP>
I usually store the dhcp-hostfile to “/jffs/configs/dhcp.dnsmasq”.
Please note the #PC lines are simply comments to make the file easier to read, they are in no way required.
PC1 is configured with 2 MAC address, a hostname and an IP. Say this would be a PS3. There is both a wired and wireless network card on it, both with its own MAC. Both interfaces will never be online at the same time, but one may wish the console to get the same IP regardless if it’s connected wired or wireless. By setting multiple MAC, it will assign the IP to the first one it sees. The hostname will simply assign a DNS entry to it and will also define the name displayed in the client status list.
PC2 only has 1 MAC address defined, the rest is the same.
PC3 has 2 MAC address defined, but no hostname. This means that whatever name the computer/device publishes will be used. I believe this is the default behaviour of asuswrt anyway.
Instead of an IP, you could also set a tag, which would translate to a pool of IP (configured in dnsmasq.conf), although I think this would require you to replace entirely dnsmasq.conf with you own custom file.
In order to manage the reservation with a dhcp-hostfile, create the file “/jffs/configs/dnsmasq.conf.add” and add the following line: “dhcp-hostsfile=/jffs/configs/dhcp.dnsmasq” (no quotes). Then create the file “/jffs/configs/dhcp.dnsmasq” and add in as many reservations you would like. You will be able to control in whichever order they appear in the file and you’ll be able to go beyond 128 reservations.
Please note you will have to stop using the Web UI to manage your IP reservation.