Preheat the oven to 350°F. Grease two 9-inch round cake pans and line the bottoms with parchment paper.
Spread all of the pecans on a baking sheet and toast for 6-8 minutes until fragrant, adding the garnish coconut to one side of the sheet for the last 3 minutes. Let cool, then set aside the garnish pecans and toasted coconut.
In a medium bowl, whisk together the flour, baking powder, baking soda and salt. Set aside.
In a large bowl, whisk the buttermilk, sour cream and sugar until the sugar mostly dissolves. Whisk in the melted butter, oil and vanilla until smooth.
Add the dry ingredients to the wet mixture and fold gently just until combined. Fold in the 1 cup of shredded coconut and the 1 cup of toasted pecans.Divide the batter evenly between the pans and smooth the tops.
Bake for 28-32 minutes, until golden and a toothpick inserted in the center comes out clean. Cool in the pans for 10 minutes, then transfer to a wire rack and cool completely.
For the frosting, beat the cream cheese and butter until smooth. Add the powdered sugar, vanilla and salt and beat until light and creamy, being careful not to overbeat.
Place one cake layer on a plate, spread with a thick layer of frosting and top with the second layer. Frost the top and sides, then sprinkle the toasted pecans and coconut over the top.Chill for 30 minutes before slicing for clean, neat layers.