Place the potatoes into a large pot, and fill with enough water to cover. Bring to a boil and cook for about 20 minutes, or until easily pierced with fork.
Drain, cool, peel and dice. Transfer to a large bowl and toss with the onion, celery, a teaspoon of salt, and hard-cooked eggs.
While the potatoes are cooking, whisk together 2 eggs, sugar, cornstarch, and salt in a saucepan.
Stir in the vinegar, milk, and mustard. Cook over medium heat, stirring frequently until thickened, about 10 minutes. Remove from the heat and stir in the butter. Refrigerate until cool, then stir in the mayonnaise.
Stir the dressing into the bowl of potato salad gently until evenly coated. Chill several hours or overnight before serving for best flavor.