Here are my thoughts:
Margot - is probably the clearest literary match with Hazel and visually vibes the most. These make a pretty much perfect combo! Also she goes with all three of your middle name choices. I’m a Margaux spelling fan myself - but Margo does look short and simple like Hazel. With one of your Sh middles, you could use Maisie as a nickname too - just for joke, Hazie & Maisie. Maggie, Meg and Peggy are classics (I’m a big Peggy fan myself).
Olive - this is very natured themed, cosy and sweet. It’s my least favourite, though, not because it’s a word name but it’s just a little too sugary sweet and young for me. To me, it has a charming, enchanted forest feel but it seems more like a set of kids’ names. I would only pick this if you would pick it without sister Hazel and you see it as having stating power (because most of her life will be without introducing her sister first and as an adult).
Florence - this is probably my favourite name of the three (Margaux spelling and Peggy are up there though!). It’s slightly less cohesive than the other two but it definitely works - has a sort of 1940s feel - I find this the most sophisticated and “name I wish I were called” name of the three. So it would likely be my pick. But I wouldn’t choose it if you don’t like Flora, Florrie or Renny/Ren.
Of the three and given your reservations re Florence, I would pick Margot - it’s smart, lovely & so many good nickname options! Otherwise, I might try for something else.