Preheat your oven to 350°F (175°C). Prepare three 8-inch round baking tins (or alternatively, two 9-inch tins) by greasing and dusting them with flour. Line the base of each with parchment paper for effortless removal.
In a medium bowl, whisk together the flour, baking soda, and salt until well combined. Set aside.
In a large bowl, cream together the softened butter, vegetable oil, and granulated sugar on medium speed until the mixture appears pale and fluffy, approximately 3 minutes.
Add the egg yolks individually, beating well after each addition. Stir in the vanilla extract and, if using, the coconut extract.
Gradually incorporate the dry ingredients alternately with the room temperature buttermilk, beginning and ending with the flour mixture. Stir just until the batter is blended; avoid overmixing.
Fold in the shredded coconut and toasted chopped pecans using a spatula to evenly distribute.
In a separate clean bowl, beat the egg whites until stiff peaks form. Using a gentle folding motion, incorporate the whipped egg whites into the batter to preserve the lightness.
Evenly distribute the batter between the prepared cake pans. Bake for 25 to 30 minutes, or until a toothpick inserted into the center emerges clean.
Allow the cakes to cool in their pans for about 10 minutes. Then transfer them to wire racks to cool completely before assembling.
To prepare the frosting, beat the softened cream cheese and butter together until silky and smooth.
Gradually add the sifted powdered sugar while beating, continuing until the mixture becomes light and airy. Blend in the vanilla extract and beat for another minute to ensure a spreadable texture.
To assemble, position one cake round on your serving dish. Spread a layer of cream cheese frosting evenly over the top.
Repeat the process with the remaining layers, ensuring even coverage between each.
Frost the exterior and top of the cake completely with the remaining icing. Finish by scattering the chopped pecans over the top and, if desired, a light dusting of coconut flakes.
Chill the assembled cake for a minimum of 30 minutes before slicing to allow the frosting to firm and the flavors to meld.