More code refactoring

Refactored code to listen for all BBMSP events in main thread and
dispatch to child threads as needed. Many of the inconsistencies were
due to events being captured by wrong thread since all were listening
for same events.