Sort and wash beans; place in a large ovenproof Dutch oven. Cover with water to 2 inches above beans, and bring to a boil. Cook 2 minutes. Remove from heat; cover and let stand 1 hour.
Drain beans, and return to pan. Add 8 cups water and onion, and bring to a boil. Cover, reduce heat, and simmer 2 hours or until beans are tender.
Preheat oven to 350°.
Drain bean mixture; return to pan. Add barbecue sauce and remaining ingredients; stir well. Cover and bake at 350° for 1 hour.