Place the shrimp in a bowl and add the crushed garlic, 1 teaspoon of annatto powder, salt and pepper. Mix well and let marinate for at least 20 minutes in the fridge.
In a medium to large sized soup pot, heat 2 tablespoons of butter or oil and sauté the shrimp until they are cooked, about 5 minutes. Remove the shrimp from the pot and save them to add at the end – keep the whole ones separate from the peeled ones. The peeled ones will be added back directly to the soup at the end, while the whole ones will be used to garnish the plates.
In the same pot where the shrimp were sautéed, add the remaining 2 tablespoons of butter with the diced onion, diced celery, and ½ teaspoon of ground annatto or achiote powder. Cook over medium heat until the onions are soft and transparent, about 3 to 5 minutes.
Add ¼ cup of white wine to deglaze the pan, stir well, and cook until the liquid is reduced by about half.
Add the potatoes and mix well.
Add the seafood stock or broth and bring to a boil. Reduce the heat and cook over low heat with the pot partially covered. Cook until the potatoes are tender, about 20 to 30 minutes depending on the type of potatoes and size of the chunks.
Use a potato masher to gently mash some of the potatoes, but don’t mash them all, you still want some small chunks of potato.
Add the corn and the milk; continue cooking on low for another 5 to 10 minutes.
Add the cream and cook for another 5 minutes. Taste and adjust salt and pepper to taste. You can also add more milk or broth if the soup is too thick.
Add the sautéed shrimp (peeled ones) and finely chopped cilantro, mix them into the soup.
Serve the soup garnished with the whole shrimp, chopped cilantro, chopped green onions and chives, avocado, lime and hot sauce to taste.