Place the fish in a large non-reactive mixing bowl. In the carafe of a blender, combine the chopped onion, the chopped tomatoes, 2 cloves of garlic, 1 tablespoon of cilantro, 1 teaspoon of salt, and the lime juice. Blend until smooth in the blender, then pour directly over the fish. Cover with plastic wrap and refrigerate for 1 hour.
Heat a large saute pan over medium-high heat. Add the olive oil to the pan, and once hot, add the julienned onions to the pan and saute, stirring often until translucent, about 3 to 4 minutes. Add the minced garlic to the pan and saute for an additional 30 seconds. Pour the fish and the marinade into the saute pan and add the remaining teaspoon of salt, the Piri Piri, and the coconut milk and stir to combine. Once the liquid comes to a boil, dot the top of the pan with the sliced tomatoes and cover with a lid. Reduce the heat to medium-low and continue to cook until the flesh starts to flake, about 10 minutes.
Remove the cover from the pan and sprinkle the remaining 4 tablespoons of cilantro over the fish. Serve accompanied by steamed white rice.
Heat a small saute pan over medium-high heat. Add 1 tablespoon of the olive oil to the pan. Once the oil is hot, add the garlic and peppers to the pan. Saute, stirring often, until the edges of the garlic start to turn brown, 3 to 4 minutes. Add the lemon juice to the pan, and remove from the heat.
Place the contents of the saute pan in a blender and add the salt. Puree the peppers and garlic in the blender until mostly smooth. Drizzle the remaining 1/2 cup of olive oil through the feed tube of the lid of the blender. Let cool before using, and store refrigerated in an airtight container.