Step 1In a large pot, place the onions, onion peels, carrot, celery tops, fish bones, heads and skin, and salt and pepper. Add water to cover and bring to a boil. Simmer for about 1 hour, adding additional water if needed. When the broth is flavorful, strain out the fish bones and vegetables and discard. Keep the broth warm.
Step 1In a meat grinder, grind the fish with the onion, carrot and celery. Put through the grinder again. Place the ground mixture in a large wooden chopping bowl and blend with the eggs and matzo meal. Using a hand chopper, chop the fish mixture, adding the water gradually with 1 tablespoon salt and 2 teaspoons pepper as you chop. (Mixture should be soft and light to the touch.)
Step 2Wet your hands with cold water and shape the fish mixture into oval balls. Bring the broth to a boil over high heat, and place the fish balls in the broth. Cover, reduce the heat to medium high, and cook until the fish is tender, about 1 hour; do not overcook. Cool, transfer to a shallow glass bowl, cover with plastic wrap and foil, and refrigerate about 2 hours.
Step 3To serve, arrange a lettuce leaf on each plate; top with fish and garnish with cucumbers and horseradish sauce. Makes about 50 fish balls.