Place the reserved bones, skin, and fish heads in a wide, very large saucepan with a cover. Add the water and 2 teaspoons of the salt and bring to a boil. Remove the foam that accumulates.
Slice 1 onion in rounds and add along with 3 of the carrots. Add the sugar and bring to a boil. Cover and simmer for about 20 minutes while the fish mixture is being prepared.
Place the ground fish in a bowl. In a food processor finely chop the remaining onions, the remaining carrot, and the parsnip; or mince them by hand. Add the chopped vegetables to the ground fish.
Add the eggs, one at a time, the remaining teaspoon of salt, pepper, and the cold water, and mix thoroughly. Stir in enough matzah meal to make a light, soft mixture into oval shapes, about 3 inches long. Take the last fish head and stuff the cavity with the ground fish mixture.
Remove from the saucepan the onions, skins, head, and bones and return the stock to a simmer. Gently place the fish patties in the simmering fish stock. Cover loosely and simmer for 20 to 30 minutes. Taste the liquid while the fish is cooking and add seasoning to taste. Shake the pot periodically so the fish patties won't stick. When gefilte fish is cooked, remove from the water and allow to cool for at least 15 minutes.
Using a slotted spoon carefully remove the gefilte fish and arrange on a platter. Strain some of the stock over the fish, saving the rest in a bowl.
Slice the cooked carrots into rounds cut on a diagonal about 1/4 inch thick. Place a carrot round on top of each gefilte fish patty. Put the fish head in the center and decorate the eyes with carrots. Chill until ready to serve. Serve with a sprig of parsley and horseradish.