In a medium saucepan, combine the 2 cups of half-and-half and 1 cup of whole milk. Heat the mixture over medium heat until it starts to steam, but do not let it boil.
In a mixing bowl, whisk together the 4 egg yolks, 3 tablespoons of cornstarch, and 1/2 cup of the sugar until fully combined and smooth.
Slowly add a few tablespoons of the hot milk mixture into the egg yolk mixture while whisking continuously. This step is crucial to avoid scrambling the eggs. Once tempered, gradually whisk the egg mixture back into the saucepan with the remaining hot milk.
Continue to cook the mixture over medium heat, stirring constantly, until it thickens and begins to bubble. This should take about 5-7 minutes. Be patient; this is where the magic happens!
Once thickened, remove the saucepan from heat. Stir in the 2 tablespoons of butter, 1/4 teaspoon of salt, and 1 teaspoon of vanilla extract until fully melted and incorporated.
In a serving dish, layer the Nilla Wafers, then add a layer of the warm pudding, followed by a layer of banana slices. Repeat the layers, finishing with a layer of pudding on top.
In a separate bowl, whip the heavy cream with 1 tablespoon of granulated sugar until soft peaks form. Gently spread this whipped cream over the top layer of pudding.
Cover the dish with plastic wrap and refrigerate for at least 4 hours, or overnight if possible. This allows the flavors to meld beautifully. When ready to serve, top with additional banana slices and Nilla Wafers for a lovely presentation.