Changed to use a single thread for most public roster methods to avoid race conditions closes #1309

Also rearranged methods a bit to more clearly separate the main public interface methods that end up causing race conditions with the roster.