There are a few problems with what you're trying to do.
These users can also change or spoof their MAC addresses, which is a problem
for you. It would be more secure to use "port security" to whitelist which
MAC addresses are approved to communicate on each switch port, or use some
sort of authentication to the switch and/or computer. If you do per-user
authentication to access the network resource in question, it doesn't matter
what MAC address they choose.
Whatever you do involving MAC addresses, I would think it would have to be
done on their local subnet / switch [e.g. each and every subnet they might
plug into]. Once a packet makes the first hop through a router, the source
MAC address is rewritten to be the MAC address of the router. Said another
way, if you were to try to block inbound access to a computer by source MAC
address, it would only work if the other computer was on the same subnet.
The computer's source MAC address is not kept anywhere in the packet once
the packet traverses a router.
If you know the MAC address you want to block, I suppose you could try
running an arp spoofing / man in the middle tool such as shijack on one
computer on the local subnet, which can effectively prevent anything from
reaching that MAC address, or if you prefer, sniff their session, data and
passwords, or take remote control of their connections, even encrypted ones.
You would want to be careful not to cause performance problems for your
switches and network devices... and I would think you would need one such
computer for each of your subnets. Once they change their MAC address, your
denial of service attack stops working.