Preheat the oven to 350 degrees F. Line the bottom of two 9-inch cake pans with a circle of parchment paper, then grease well.
In a large mixing bowl, cream together the butter, oil, and sugar. Add the eggs, vanilla extract, and coconut extract, and mix until well combined.
In a separate bowl, combine the flour, baking powder, and salt. Once these have been mixed together, pour them into the other bowl with the wet ingredients. Add the coconut milk and stir everything together until just combined.
Fold in the cup of shredded coconut.
Pour the batter equally into your two greased cake pans. Place the cakes in the oven and bake at 350 degrees F for 22 to 26 minutes, or until the cakes are cooked through and a toothpick pulls out clean from the center.
Let the cakes cool in the pan for five minutes, then remove the cakes and let them finish cooling on a cooling rack.
Meanwhile, prepare the frosting: combine the dairy-free butter, dairy-free cream cheese, powdered sugar, and vanilla extract in a mixing bowl. Use the whisk attachment of a stand mixer or hand mixer to combine these until a light, fluffy frosting forms.
Nutrition analysis (approximate per slice): 523 calories, 29.5 g fat, 19 g saturated fat, 385 mg sodium, 62.5 g carbohydrate, 1.5 g fiber, 48 g sugar, 3.5 g protein, Vitamin D: 1%, Calcium: 3%, Iron: 7%, Potassium: 2%