UV Map/Atlasing Texture Scaling Issue
UV mapping is used to position a vertex on an image. The U and V values for a vertex are between 0.0 and 1.0, a value of 0.0 means it is on the left or top edge of the image, while 1.0 means it is on the right or bottom.

Whether you use a 512x512 image or a 4096x4096 image, a value of 0.5 will always be in the middle of the image. Where a face uses vertices that are 0.25 apart, the face will use one quarter of the image, a larger image means more detail on the given face.

In your example, you layout the UVs on a 512x512 image and then use a 4096x2048 image. As the new image is twice as wide as it is high the texture gets stretched in the one direction, which depends on the face orientation on the image.

If you want to increase the texture detail, you want to increase the image resolution the same amount in both directions.

It is possible to bake multiple textures onto one, which sounds like what you want to look into. To get the result, you want to make a new UVLayout that positions the multiple materials onto different parts of the image and then you bake the old materials onto the new image. This method allows you to convert between a square and rectangular image texture.