I think I discovered at least part of my problem. As for a new SFSB being created, the selectedCsessionValueChangeListener was getting an exception from a query and it wasn't being log/handled anywhere. Once I fixed this problem, a second SFSB is NOT created.
Still looking for why it calls the same method 3 times.
This is just the way jsf works.