Wash, peel and cut potatoes into pieces. Half-fill a saucepan with water, add salt, then the potatoes and brig to a boil. Simmer for 15 minutes, until tender. Drain thoroughly, then add milk, butter, salt & pepper and mash. Beat until fluffy and season to taste; set aside.
Peel and quarter onion. Pour the remaining milk into a saute pan, then add the peppercorns, bay leaves and onion quarters. Bring to a boil, then remove from the heat. Cover and let stand in a warm place to infuse for about 10 minutes.
With a sharp knife, cut each of the fillets across into pieces and add to the milk; cover and simmer for 5-10 minutes, depending on thickness. It should flake easily when tested with a fork.
Transfer the fish to a large plate, using a slotted spoon; reserve the cooking liquid. Let fish cool, then flake with a fork.
Gently melt the 6 T butter in a saucepan over medium heat. Whisk in the flour and cook for 30-60 seconds, until foaming. Remove from the heat and pour the reserved fish cooking liquid through a sieve into the butter and flour mixture.
Whisk the liquid into the sauce, then return to the heat and cook, whisking constantly, until the sauce boils and thickens. Season with salt and pepper and simmer for 2 minutes. Stir in the parsley.
Preheat the oven to 350°F Grease a 10-inch (2-liter) casserole dish. Coarsely chop the hard-boiled eggs. Ladle a third of the sauce into the bottom of the dish.
Spoon the flaked fish on top of the sauce, in an even layer. Cover with the remaining sauce, then distribute the shrimp evenly on the surface. Sprinkle the chopped hard-boiled eggs over the top.
Spread the mashed potatoes on top, so it is covered completely. Bake in the oven for 20-30 minutes, until the potato topping is brown and the sauce bubbles around the edge. Serve hot.