Place the potatoes in a pan of boiling salted water, cover and simmer for 15-20 minutes or until tender.
Meanwhile, place the milk in a small saucepan with 225ml of the cream and the bay leaf. Add the fish fillets and poach for 3-5 minutes until just tender. Transfer to a plate with a fish slice and set aside until they are cool enough to handle, then flake into bite-sized chunks; discarding the skin and any bones. Strain the poaching liquid through a sieve into a jug.
Melt 50g butter in a large non-stick pan. Add the onion and cook gently for 4-5 minutes until softened but not coloured, stirring occasionally. Stir in the flour and cook for 2 minutes, stirring continuously. Pour in the white wine and allow to reduce, then add the reserved poaching liquid, a little at a time, whisking continuously after each addition. Reduce the heat and stir in the leeks. Simmer gently for 6-8 minutes until the leeks are softened and the sauce has slightly reduced and thickened, stirring occasionally. Stir in the herbs and prawns and season to taste.
Drain the cooked potatoes and return to the pan for a couple of minutes to dry out, shaking the pan occasionally to prevent the potatoes sticking to the bottom. Mash the potatoes. Beat in the remaining butter and cream. Season to taste.
Lightly butter an ovenproof dish that is at least 30cm in diameter and add a couple of tablespoons of the sauce. Scatter over the poached fish, then spoon the remaining sauce on top to cover completely. Allow a light skin to form, then carefully spread over the mashed potatoes to cover completely. Smooth over with a palette knife and fluff up with a fork. Grill until completely heated through and the potato is bubbling and golden. Serve straight from the dish onto warmed plates at the table.