In a large pot, melt the butter in 1 tablespoon of the olive oil. Add the onion, cover and cook over low heat, stirring occasionally, until softened, about 5 minutes. Add the broth and water along with the carrots and bring to a boil over high heat. Cover and simmer over low heat until the carrots are tender, about 30 minutes.
Meanwhile, in a small saucepan, heat the remaining 2 tablespoons of olive oil. Add the scallions and poppy seeds and cook over moderately high heat, stirring, until the scallions are softened, about 1 minute.
Working in batches, puree the carrot soup in a blender until smooth; transfer to a clean saucepan. Stir in the cream and milk and simmer over moderate heat, stirring. Season the soup with salt and pepper and ladle into bowls. Garnish with the scallions and poppy seeds and serve.