In a large pot over medium heat, cook the chopped bacon until crisp.
Add butter and olive oil. Add onion, carrots, celery, and garlic, then cook until softened and fragrant.
Add the diced potatoes and stir. Sprinkle in the flour and cook for 1–2 minutes, stirring constantly, until everything is coated.
Slowly pour in the chicken broth while stirring. Add the heavy cream and milk, then stir in the Dijon and Worcestershire.
Bring to a gentle simmer and cook until the potatoes are tender and the soup has thickened, about 12–15 minutes.
Stir in the chopped corned beef and sauerkraut. Add the ground thyme, paprika, red pepper flakes, and black pepper, then simmer.
Lower the heat and add the Swiss and smoked Gruyère a handful at a time, stirring until fully melted and creamy.
Stir a little of the cooked bacon back into the soup and save the rest for topping.
Ladle into bowls and finish with extra chopped corned beef, chopped bacon, shredded smoked Gruyère, sliced green onions, and a light drizzle of Thousand Island.
