Trim the tough woody ends from the asparagus and discard. Cut the asparagus into 2-inch pieces.
Bring 2 quarts water and 1/2 teaspoon of the salt to a boil in a large pot over high heat. Add the asparagus and cook until crisp-tender, about 3 minutes. Drain, reserving the cooking liquid.
Melt the butter in a large saucepan over medium-high heat. Add the onions, leeks, the remaining 1 teaspoon salt, and the white pepper. Cook, stirring often, until the leeks are wilted, about 3 minutes. Stir in the garlic, then the flour, and reduce the heat to medium-low. Stir to cook the flour, without browning, about 2 minutes. Add the asparagus and the reserved cooking liquid. Bring to a boil over high heat. Reduce the heat to medium-low. Simmer, uncovered, until the asparagus is very tender, about 30 minutes.
Purée the soup with an immersion blender or in batches in a food processor or blender. Strain the soup through a wire sieve into a large bowl. Discard the solids. Whisk in the cream. Cover and refrigerate until well chilled, at least 2 and up to 8 hours.
Ladle the soup into bowls and garnish each serving with a heaping tablespoon of crabmeat, a dollop of sour cream, a small spoonful of caviar, if using, and a sprinkling of chives.
Yield: 8 servings