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
#!/bin/bash mount -o remount,rw /etc (or whatever mount point contains your /etc, maybe just /) useradd here_be_some_parameter_handling mount -o remount,ro /etc
would temporarily remount the disk as read-write and then back as read-only.