In a medium saucepan, whisk together the milk, granulated sugar, cornstarch, and salt over medium heat. Cook, stirring constantly, until the mixture thickens and begins to bubble, about 5-7 minutes.
In a small bowl, whisk the egg yolks. Gradually add a few spoonfuls of the hot milk mixture to the yolks to temper them, then whisk the yolk mixture back into the saucepan. Cook for an additional 2-3 minutes, stirring constantly until thickened.
Remove the saucepan from heat and stir in the butter and vanilla extract until smooth. Allow the pudding to cool for about 15 minutes.
In a 9x13 inch dish, layer half of the vanilla wafers on the bottom. Top with half of the sliced bananas, then pour half of the pudding over the bananas. Repeat the layers with the remaining wafers, bananas, and pudding.
In a mixing bowl, beat the heavy whipping cream and powdered sugar until stiff peaks form. Spread the whipped cream over the top of the pudding.
Cover and refrigerate for at least 4 hours, or overnight for best results. Serve chilled.