Things like message bus are other threads from editor that have no bearing on performance of your game. You want to focus on game thread and render thread. I’d actually start by using following exec commands rather than diving into profiler (use profiler when you want to go into more detail on specific things):
stat unit - displays frame time by thread, which can help determine if you are CPU or GPU bound
stat scenerendering - displays where rendering related time is going, and has a few things like # of draw calls
stat game - displays where game related time is going
If you have a lot of draw calls and are CPU bound, try out sprite groups in 4.8, they let you merge many draw calls together into one. You select a bunch of sprites in level editor and press Merge Sprites in details panel to create one. You can always break it back apart later if needed.
Beautiful scene BTW.
Cheers,