Useradd creates lock files in /etc/ directory. Is it possible make it create them somewhere else?
AFAIK that's not possible without modifying the source code.
Why is /etc problem for you? Do you want to keep it read-only or...?
EDIT: OK, so your /etc is a read-only directory. Would it be possible to you to write a wrapper around useradd? A small script like
would temporarily remount the disk as read-write and then back as read-only.