Melt the butter in a soup pot over medium heat. Add onion and stir occasionally until the onion is soft, about 5 minutes.
While the onion is cooking, cut up tomatoes into 1"-2" chunks and place in a mixing bowl. Add baking soda and stir to combine. Set aside.
Stir garlic into the onion and cook for 30-45 seconds until it just starts to color. Add the tomato mixture and bring to a boil over medium-high heat, then reduce heat to maintain a strong simmer.
Add chicken bouillon, beef bouillon, white pepper, and black pepper. Stir to combine. Continue to simmer for 10 minutes.
Remove soup from stove. Puree in a blender until smooth. Depending on the size of your blender it may be best to do this in two batches.
Strain blended soup through a sieve into a saucepan. Use a spoon to press it through leaving any seeds, skins and chunks behind. This will take less than a minute.
If you want to freeze the soup base for later, do it now. Otherwise, add the milk and cream to the base and stir. Taste for salt and sugar. Depending on the sweetness of your original tomatoes you may need to add 1-3 teaspoons of sugar now. Adjust salt as desired. Heat the soup gently over low and serve when it reaches the desired temperature
Make sure to reheat any leftovers gently to prevent overcooking the milk and cream.