Samuel, as some of the other answers have suggested, layer masks are very useful for this sort of thing. I wish I had learnt about layer masks earlier in my journey (and you may already have done so given the age of this question!) But in case it's useful to others who land here, here is my explanation of layer masks, and how they can be used in this situation.
Layer masks were a bit confusing to me at first. But the following analogy helped: think of white piece of card that you might use as a stencil on top of something else. Wherever the white card covers the underlying image, you see the white card. When you cut out (think darken) pieces of the card, you see the underlying image. In Gimp, you use white and black paint brushes to "fill in" or "cut out" pieces of the stencil/layer mask. In fact, the stencil can be partially transparent (grey) which gives you a very fine level of control as to how much of the underlying image shows through.
Start by duplicating the original image twice. On the top one, use Colors/Threshold to created an initial "stencil" like this:

It's black and white like a rough stencil might be :) We'll refine it just now. Select this whole layer and copy it to the clipboard (ctrl-a, ctrl-c), then right click on the next layer down, select "Add Layer Mask" and use any of the options (White Full Opacity for example). You'll see the extra box appear to the right of the second layer.

(By the way, note that whenever this layer is selected, you must be aware that you could either edit the image itself or the layer mask (stencil).)
Now paste/anchor the clipboard contents (b&w thresholded image) onto the layer mask (ctrl-v, ctrl-h), and delete the original threshold image as we won't be needing it any longer. Your layers look like this now (note the thin white border around the layer mask, which tells you that any edits you apply on this layer will apply to the layer mask):

The layer mask is a little sharp edged, so you could use Filters/Blur/Gaussian blur to blur the edges a little (say 20-30 pixels).
Now the beauty of layer masks begins to show itself. To summarise, wherever the layer mask is white, that layer's image will show, and wherever the layer mask is black, the underlying image(s) will show. So you can see that the layer mask is black wherever the original image was underexposed. So select the original underexposed image, and use the curves, levels or contract tools to lighten or otherwise get the dark parts of the image the way you like them. (Notice as you do this that the over-exposed areas don't lighten.)
Then select the layer with the layer mask - make sure to click on the left/image side of the layer list, not on the right/mask side. (The white border will move to the image side.) Now use the curves/levels/contrast tools to darken or otherwise edit the layer. You should notice that the darker parts (including the woman's shorts for example) don't get darker while you're editing. Only the parts that are white in the layer mask will appear in the actual image.
If at any stage the "lines" between the dark and light areas become visible or obvious, you can use a soft black or white paintbrush on a low opacity to edit the layer mask along the line.
I thought the girls dress was a little bright, so I added another layer in Overlay mode, and painted a little with a soft black brush to darken the dress only. I also increased saturation of the whole image and sharpened slightly and came out with the following final result, next to your original:
