Yep, somebody was exploiting a weakness in my IPv6-handling code. I've fixed the weakness (the faucet is now much stricter about what it considers "different" IPv6 addresses)
A /48 block of IPv6 addresses is very easily obtained; anything less strict than that could be easily abused I should imagine. I'd wary of restricting access to anything by IPv4 or IPv6 address at all; anyone in a large DHCP pool or at a site with large IP assignment (like a university campus) will likely try to connect from many IPs or physical machines.
I noticed this transaction today which looks somewhat suggestive of someone abusing the faucet -- I guess the zero fee (below the default for >=4kB transaction?) means they also wanted to hold on to every penny they'd accumulated:
As for changing the faucet 'payout', I don't see why it can't just just calculate a fixed fraction of whatever's available at the time, rounded, and then clamped between safe minimum/maximum values. It shouldn't need much manual adjustment then. Abuse of the pool would lower the payout, making it less worthwhile, but preserving funds to keep the faucet functional for users just wanting to get started on bitcoin and play around. And the payout would react sensibly to changes in BTC value (because that would affect donations, and hence the available funds).
Also I was wonder if the faucet could offer a 'include transaction fee' option whereby a portion of the faucet payout would be used to pay a transaction fee. Or eventually even make a very small fee compulsory, marking a shift away from free transactions.