Rendering at larger sizes can also make it more likely SD will generate multiple subjects. You can use the Regional Prompter or Latent Couple extensions for stable-diffusion-webui to control the subjects separately.
You can also generate subjects separately using txt2img, paste them into a single scene, then do a pass with img2img to make the image look seamless. That is about the hardest approach, though. ControlNet with OpenPose and region prompter are my go-to solution.
Yeah I absolutely prefer the OpenPose approach because #1 you can guarantee that you will have (at least) the number of subjects that you want, it's fairly straightforward, and I like having control over the pose.