Place the fish in a large nonreactive mixing bowl, add the lime juice, and set aside to marinate while you proceed with the recipe.
Heat a large saute pan over medium-high heat, and add the olive oil. Once it is hot, add the onions and cayenne peppers and saute, stirring often, until the onions are translucent, 3 to 4 minutes. Add the garlic and saute for 30 seconds. Add the diced tomatoes, tomato paste, stock, and 1 teaspoon of the salt, and stir well to incorporate. Bring the mixture to a boil. Season
the fish with the remaining teaspoon of salt. Then add the fish (with the lime juice) and the coconut milk. Stir to combine, and bring the liquid to a boil. Cover the pan, reduce the heat to medium-low, and cook until the flesh of the fish starts to flake, about 10 minutes.
Remove the cover, sprinkle the cilantro over the fish, and serve accompanied by steamed white rice.
Rinse the shrimp shells under cold running water and place them in a stockpot with the shrimp shells, onion, carrots, celery, garlic, bay leaf, peppercorns, salt, and water. Bring the pot to a boil and then lower the temperature to a simmer. Skim the impurities that rise to the surface with a ladle, spoon or a skimmer. Simmer the stock for 45 minutes to 1 hour.
When the stock is completed, strain the stockpot and immediately cool the strained stock using an ice bath of water and ice. Use the amount of stock you need, and refrigerate and/or freeze the remainder.
In a saucepan, bring the rice, bay leaf, salt and water to a boil and reduce to a simmer for 20 minutes or until the liquid has evaporated. When the rice is cooked, add the cilantro and lime juice and fluff with a fork. Serve.