If you set the gnuserv-screen variable to the frame that should be used to display buffers that are pulled up, a new frame will not be created. For example, you could put
(setq gnuserv-screen (selected-frame))
early on in your `.emacs', to ensure that the first frame created is the one used for your gnuserv buffers.
Put the following in your `.emacs' file to start the server:
(gnuserv-start)
Start your first XEmacs as usual. After that, you can do
gnuclient randomfilename
from the command line to get your existing XEmacs process to open a new frame and visit randomfilename in that window. When you're done editing randomfilename, hit C-x # to kill the buffer and get rid of the frame.