Ignite is considered to be fully started after exiting start() method.
I don't think you should rely your logic on rebalancing state (for caches other than REPLICATED) since further topology changes will make rebalancing process start again.
You can configure SYNC for org.apache.ignite.configuration.CacheConfiguration#rebalanceMode and this will ensure that initial rebalancing is finished prior to exiting start().
Services and continuous queries started in the cluster prior to new node start will be deployed and started locally as well.
If you need listener callback you can use LifecycleBean and process AFTER_NODE_START event. This event is fired after all components are fully started.
Let me know if you have questions.