For the salsa: Preheat a charcoal grill for medium-high heat.
Brush the bell peppers, tomatoes and chiles with oil and season with salt and pepper.
Grill the bell peppers until charred on all sides and just cooked through, about 2 minutes per side. Remove to a bowl, cover with plastic wrap and let steam for 15 minutes. Remove the skin and seeds and dice.
Grill the tomatoes until charred on all sides and just cooked through, about 2 minutes per side. Remove to a cutting board, let rest for 10 minutes and coarsely chop.
Grill the chiles until charred on both sides, about 2 minutes per side. Remove to a bowl, cover with plastic wrap and let steam for 10 minutes, and finely chop.
Combine the bell peppers, tomatoes, chiles, olives, cilantro, capers, thyme, oregano, vinegar and oil in a medium bowl and season with salt and pepper. Let the mixture sit at room temperature for 30 minutes before serving to allow the flavors to meld.
For the snapper: Combine the achiote, coriander and oregano in a small saute pan and toast over low heat until just fragrant, about 2 minutes. Remove from the heat, let cool slightly and grind in a coffee grinder. Combine the ground spices with the paprika, salt and pepper in a large baking dish. Add the lime juice, garlic and oil, and whisk until the consistency a smooth paste. Sprinkle the fish all over with salt and pepper. Rub one side of each fish generously with some of the paste. Cover and marinate for 20 minutes.
Preheat a charcoal grill for direct medium-high heat and indirect grilling.
Grill the fish, paste-side down, over the direct heat, until the paste is nicely charred, 5 to 7 minutes. Carefully flip the fish over using a large, heavy duty spatula and move the fish to the opposite side of the coals. Cover the grill and continue cooking until just cooked through, 10 to 15 minutes. Transfer the fish to a large platter. Spoon the salsa on top and garnish with the fresh herbs.