I have decided to create two separate texture sets for my model. One for the helmet and one for the body. This is so I don't have to work with a 8192x8192 Photoshop file that my computer wouldn't be able to handle. Even a 4096x4096 file nearly makes Photoshop crash on my computer, but editing two 4k textures is a lot more manageable than one 8k texture.
Currently, I have a fair amount of wasted texture space, which is mainly due to how I've unwrapped the bulk of the helmet (at the bottom). I could scale up the individual pieces to fill this space, but I would then have an inconsistent pixel density on my model. I also can't scale the pieces up uniformly without unwrapping the main bulk again with more seams, as it is already scaled as large as it can go (from edge to edge). I have chosen to keep this UV layout, and use some of the extra space for the body UVs if there are parts that can be easily separated.
I ran into a lot of issues trying to bake an ambient occlusion map. First was the issue of envelopes clipping and sampling an undesired surface. I was able to fix this on the normal map by doing each piece separately, but the ambient occlusion is reliant on the fact that all the pieces are done at the same and are in the correct positions. I needed the individual objects to occlude each other's ambient occlusion rays, but not the transfer rays from the envelopes to the target meshes. I solved this by baking an ambient occlusion directly onto my high poly model (using automatic UV unwrapping) and then transferring it to my low poly as a diffuse map. This meant I could each piece individually, as a diffuse transfer isn't dependent on each piece being done at the same time.