Gently heat the milk and 85g of the butter in a medium pan until the butter has melted and the milk has started to simmer. Leave to cool to room temperature. Tip the flour, orange zest, mixed spice, carrots, yeast, caster sugar and 1 tsp salt into a large bowl with the eggs, then add the cooled milk mixture and bring together into a sticky dough using your hands. Knead until combined, then tip onto a floured work surface and knead again for 5-10 mins until smooth and springy. Transfer the dough to a lightly oiled, large bowl, cover and leave to prove for 1 hr, or until doubled in size.
Generously butter a 25cm bundt tin. Melt the remaining butter and leave to cool slightly. Mix the cinnamon, walnuts and brown sugar together in a medium bowl. Separate the proved dough into 40-50 x 25g pieces and roll into balls on a lightly floured surface. Roll the marzipan into small, pea-sized balls and set aside. Dunk the dough balls in the melted butter, then roll in the walnut and sugar mixture to coat. Drop the dough balls into the prepared tin, dotting around some of the marzipan balls as you go. Repeat until you’ve used up all the dough balls and marzipan. Cover and prove again for 45 mins until the dough has risen slightly.
Heat the oven to 180C/160C fan/gas 4. Uncover the tin and bake for 40-45 mins, or until well risen and golden. Carefully loosen the bread from the edges using a skewer or butter knife, and leave to cool in the tin for 20 mins. Invert onto a serving plate, keeping the tin in place, and leave for 5-10 mins (the bread will naturally shrink away from the sides), then remove the tin.
Gradually whisk the orange juice into the icing sugar to make a thick icing, then drizzle over the bread, letting it drip down the sides. Scatter over the orange zest and serve warm.