For the cake: Preheat the oven to 350 degrees F. Grease three 9-inch round baking pans with butter or spray with cooking spray. Flour generously. Alternatively, you can cut out waxed or parchment paper circles to line the bottom of your cake pans.
To prepare the cake, in the bowl of an electric mixer fitted with the paddle attachment, cream the butter and sugar on medium speed until light and fluffy, about 5 minutes. Be sure to scrape down the sides of the bowl occasionally to incorporate all the sugar with the butter. Add the eggs, one at a time, beating well after each addition. Beat in the vanilla.
In a medium bowl, combine the flour, baking powder, baking soda and salt.
Mix the flour mixture into the egg mixture, alternating with the buttermilk, beginning and ending with the flour. Mix just until incorporated, scraping the sides of the bowl down occasionally. Using a rubber spatula, stir in the sour cream.
Spoon the batter into the prepared pans and smooth the tops. Tap the bottom of the pans to get rid of any air pockets in the batter. Bake until a toothpick inserted into the center of the cakes comes out clean, 25 to 30 minutes.
Let the cakes cool in the pans for 10 minutes. Then remove them from the pans by inverting. Thoroughly cool your cakes on wire racks before frosting them.
To assemble the cake, place one cake layer on a serving plate, with the flat bottom side facing down. Spread half of the Butter Filling over the surface of the cake. Top with another cake layer, inverted, so the bottom of the cake is facing up. Spread with the remaining butter filling. Place the remaining cake layer, also inverted, on top. Cover and freeze for at least 1 hour. While the cake is in the freezer, prepare the frosting.
For the frosting: In the bowl of an electric mixer fitted with the paddle attachment, place the cream cheese, butter and vanilla and beat on medium speed for 2 minutes until light and fluffy. Beat in the confectioners' sugar, 1/2 cup at a time, with the mixer set on low. If you find the frosting is too soft, just chill it for 10 minutes in the fridge before using.
Remove the cake from the freezer and spread the frosting over the top and sides of the cake. Store the cake, covered, in the refrigerator until the guests arrive.
In the top of a double boiler, melt the butter over simmering water. Remove from the heat.
Whisk in the sugar, orange juice and eggs until the mixture is smooth. Return the double boiler to the heat and cook, stirring with a whisk constantly, until the mixture is very thick, 15 to 20 minutes. Whisk in the cream cheese. Remove from the heat and let cool for 30 minutes.
Spoon the filling into a bowl, cover with plastic wrap right up against the surface of the filling to prevent a skin from forming and chill for at least 4 hours.
Now, when you're whisking your gooey butter filling and waitin' on that filling to get all nice and thick, just keep in mind that before it gets thick, it'll thin out at first. Don't worry about that. This happens because the mixture is heatin' up. But as moisture starts to evaporate, this filling will thicken up. Just remember to keep stirring, and watch out for the air bubbles - you don't want to beat air into your filling.