In a large saucepan, melt the butter over medium heat.
Add the onion and sauté until golden, about 10 minutes.
Stir in the flour and let cook for a minute or two.
Slowly whisk in the milk, heavy cream, chicken broth, water and salt
Add the cauliflower and bring the mixture to a boil. Reduce heat to medium-low, cover and simmer until the cauliflower is fork tender, about 10-15 minutes.
Blend up the soup in a couple of smaller batches until completely smooth. (Make sure to remember to remove the center part of the lid and use a towel to lightly cover the hole to stop the blender from exploding.)
Return the soup to the saucepan and heat over medium-high heat until nice and hot.
Remove from heat and whisk in the mustard, cheeses, 1/2 tsp salt and white pepper until melted and smooth.
Garnish soup with extra cheese, bacon and chives as desired.