Have you tried to make the subparts to one mesh before applying autoweighting? This gives you the heads with proper weighting then. You could delete the other parts after applying.
Dunno how to reuse it together with the other heads then.
Interesting problem. Does indeed not work with two joined but not connected meshparts. Never noticed that. Hm, a bug report cannot hurt
You might get away with doing the parenting by apply with envelope weights instead of apply with automatic weights. The envelope size can be set in Edit mode in the Properties sidebar in the Transform tab. But even that results was everything but convincing, since you can just adjust the overall size of the envelope. Not the radius and height independant. (Maybe i miss something here).
This worked to some degree. But you will most likely need to fix the weightpaint manually here too.
What could also be a time saver is to transfer weightmaps. But this requires to have thes same amount of vertices of the meshparts. I think there is a Blender addon for that purpose.
Another thought, weight one complete character. Then multiply the mesh, and then remodel the parts that you need. Means one complete body, then double it, then cut away everything but the head, and remodel the head to your needs.
I have never rigged a multirig character though, and this method is untested and just a guess. So i don’t know what pitfalls awaits you here.
You can use meshdeform instead, that’ll work more predictably out-of-the-box. But otherwise you’re just going to have to paint your weights very carefully to get the deformations you want. Animate a neck or head bone, and as you paint weights, move through the animation to see if your weights are working well.
Evelopes seem tough to work with given how little control you have with them.
I got it working by merging the vertices at the seam and then parenting the mesh to the armature then spliting the vertices so I have two meshes again.