Heat 2 tablespoons of oil in a large saucepan or stock pot over medium heat. Add onion, celery, carrot, bell pepper, and garlic to the oil and saute until the onions are transulcent, but do not brown. Rinse beans under cold water and strain. Measure 3 cups of the strained beans into a food processor with 1 cup of chicken stock. Puree on high speed until smooth. Add the pureed beans and remaining whole beans to the cooked vegetables. Add the remaining chicken stock, apple cider vinegar, chili powder, cayenne pepper, cumin, and salt to the mixture in the saucepan and stir to mix. Bring mixture to a boil. Reduce heat and simmer uncovered for 50 to 60 minutes or until soup has thickened and all the ingredients are tender. Serve the soup topped with 2-3 tablespoons of cheese, sour cream, and a teaspoon of chopped green onion.