Further progress - which I put down here for the record, in the hope that it may be useful to others with similar issues as well as in diagnosing and fixing my own situation.
I can confirm now that MPI_Comm_spawn can be got to work if you have the same username on all machines as indicated above. It's still far from trivial; here's what I needed to do. In what is below it is to be understood that the basic setup is a desktop 'master' machine which runs mpiexec and sets off the spawn, spawning to 'slave' nodes (which may or may not be other desktop machines), all running some flavour of Linux (the exact flavour of which does not need to be identical across machines).
1) Create identical usernames on all machines. This user's directories and logins will be used for MPI.
2) Configure identical MPICH installations on all machines - in the same directory structure.
3) Set up sshd on each machine and configure them for key authentication (RSA recommended). This is done by editing /etc/ssh/sshd_config to have the value 'PasswordAuthentication no' at the appropriate line.
4) Create ssh keypairs using ssh-keygen on each node for the username above which you have created. You can use a passphrase if you like.
5) Concatenate the entire set of public keys - id_rsa.pub from the ~/.ssh directory (or where you put them) on each node into a combined authorized_keys file. This allows each node to ssh to each other node. Copy the merged file back to the ~./ssh directory for each node.
6) Make sure the permissions for the ~/.ssh directory and the files id_rsa and authorized_keys are set allow only the user to access them (chmod u+rwx <files>, chmod go-rwx <files>. This corresponds to octal permissions field 700. Permissions need to be exactly this or ssh will not authenticate. The owner of all of these files will need to be the user you created in step 1. If this is not the case run sudo chown <user>:<user> <file> for each one having a different owner.
7) If you are running Ubuntu 14.x-16x or other versions which autoload gnome-keyring, disable it by editing /etc/xdg/gnome-keyring-ssh.desktop, adding the line 'X-GNOME_Autostart-enabled=false'; adding the same line in ~/.config/autostart/gnome-keyring-ssh.desktop if this file exists; and (being perhaps a bit paranoid) removing execute permissions from the executable /usr/bin/gnome-keyring-daemon: chmod ugo-x ./gnome-keyring-daemon. You will need to restart the OS.
8) Configure your /etc/hosts files on each machine to have an entry for each node - including the local machine itself - with the name you are going to use in the host field in your MPI_Comm_spawn command(s). It may also be possible to do this by adding entries to any local DNS servers you may have, provided each machine is configured to look at the modified DNS servers.
8) Copy your MPI executables to the same working directory - not the MPICH install directory - on each machine. It may be possible to have different directories on each machine for the executable but I have not tested this.
9) run eval `ssh-agent` on each machine to start the ssh key agent and then use ssh-add <path_to_private_keyfile> (probably ~/.ssh/id_rsa) to add the key to the agent. If you have set a passphrase you will need to enter it at this point.