Peel the onions but leave them whole. Slice each onion crosswise into rings that are about ¼ inch thick. Separate the rings carefully.
In a 5-quart pot or Dutch oven, heat 1½ inches of oil over medium heat until a candy thermometer registers 375°F. Line a sheet tray with paper towels, then place a wire rack inside.
In a large mixing bowl, whisk together the flour, cornstarch, salt, baking powder, garlic powder, and paprika until well combined.
In a large liquid measuring cup, whisk the milk, ½ cup cold water, and egg until fully combined and smooth.
When the oil is nearly at 375°F, whisk the cold liquid mixture into the flour mixture until no lumps remain and the batter is smooth.
Once the oil is hot, place a few onion slices into the batter and turn until well-coated. With a fork, remove each ring, letting the excess drip off, then carefully place it in the hot oil.
Continue working in batches to dip and fry the onion slices for 2 to 3 minutes, flipping occasionally until golden brown and crispy. Adjust the heat as needed to maintain the oil's temperature between 350 and 375 degrees.
Remove the onion rings from the oil using a spider strainer or large slotted spoon and place them on the wire rack to drain. Sprinkle with more salt to taste and serve immediately.