Im guessing that there should be a implementation for xpub for Ethereum.
You could use that xpub to generate the required addresses programmatically, than tie them to each user on your db.
I would also check the db each time after generating a pubk just to be absolutely sure theres no duplicates.