Put the shrimp shells in a medium pot and add the coarsely chopped onion, carrot, and halved corn cobs. (It's all about building layers of flavor.) Top with 2 cups of water. Bring to a boil over medium-high heat and decrease the heat to simmer. Cook until the broth is slightly colored and smells lightly sweet, about 5 minutes. Strain into a bowl, discarding the solids, and set aside.
Heat the oil in a large pot over medium heat. Stir in the poblano, celery, chopped onion, potato, and reserved corn kernels. Add the thyme, bay leaves, 1/2 teaspoon salt, and a few grinds of pepper and cook, stirring, 5 to 7 minutes. Stir in the flour until incorporated, about 2 minutes. Stir in the shrimp stock and milk, then cover and bring to a boil over medium-high heat. Uncover, decrease the heat to medium-low, and gently simmer until the vegetables are tender, about 15 minutes. Remove from the heat. Discard the thyme sprigs and bay leaves.
To finish the soup, in the stockpot, using an immersion blender, puree the soup. Or, ladle the soup into a blender and puree until smooth, a little at a time. Leave it coarse and chunky if you prefer a more rustic soup or puree until smooth for a more elegant soup. Taste and adjust for seasoning with salt and pepper. If needed, rewarm the soup over medium-low heat. Stir in the reserved shrimp and tomato; cook until the shrimp are opaque, about 2 minutes. Add the parsley and taste and adjust for seasoning with salt and pepper. Divide among warmed bowls and sprinkle with paprika. Serve immediately.