Add milk and cream to a medium saucepan over medium heat. Bring to a simmer, stirring often.
In a medium bowl, whisk together the eggs, sugar, and cornstarch until well blended.
Spoon a little of the hot milk over the egg mixtures and whisk well. Repeat with another few spoonfuls of the hot milk, to temper the eggs (bring their temperature up without “scrambling” them).
Pour the egg mixture into the saucepan and continue to cook over medium low heat (don’t let it boil) for 5-8 minutes until thickened and coats the back of a spoon.
Once thickened, remove from the heat and stir in the butter, vanilla extract and salt.
Pour the pudding through a sieve or fine mesh strainer into a container, to remove any lumps and make it silky smooth.
Place a piece of plastic wrap directly on top (to prevent a skin from forming on it). Refrigerate for an hour or more, until chilled. Stir well once chilled.
To assemble the banana pudding, use a 9 inch square pan, a large bowl, trifle dish or individual dishes.
Line the bottom of the pan with vanilla wafers. Top with sliced bananas, then 1/2 of the pudding mixture. Repeat with another layer, and end with a final layer of wafers (whole or crushed into pieces).
Cover tightly with plastic wrap and place the assembled dessert in the fridge for 4-8 hours.
Top with fresh whipped cream before serving, if desired.
Make ahead Instructions: Banana pudding can be made 1-2 days ahead of time. Store covered in the refrigerator until ready to serve.Freezing Instructions: For best results, freeze only the pudding and assemble the banana pudding once it's thawed. Allow the homemade pudding to cool completely and store in a freezer safe bag for up to 3 months. Thaw overnight in the refrigerator and assemble pudding with Nilla wafers, bananas, and whipped cream.