Hi Martijn,
I am glad that you found the updates in watchOS 2.2.1 and iOS 9.3.2 beta 2 to be helpful.
Regarding your question about how to use the delegate methods that tell your app how the session activation state has changed, I would like to point you to the WCSession documentation, and the section on "Supporting Communication with Multiple Apple Watches":
https://developer.apple.com/library/ios/documentation/WatchConnectivity/Reference/WCSession_class/
There is also useful information in the reference for sessionDidBecomeActive(_:)
https://developer.apple.com/library/ios/documentation/WatchConnectivity/Reference/WCSessionDelegate_protocol/index.html#//apple_ref/occ/intfm/WCSessionDelegate/sessionDidBecomeInactive:
As mentioned, this callback gives your app a chance to clean up any state information or tasks that might be tied to the activation state of the session, and lets your app know not to start any more data transfers or messages until the session becomes active again.
For example, if you have a long-running task, such as a network fetch, after which you would send data to the watch, this delagate method might be called after you started that long running task, but before you initiated communicating the fetched information to the watch. In this case, you might chose to cancel the long running task.
And sessionDidDeactivate(_:)
https://developer.apple.com/library/ios/documentation/WatchConnectivity/Reference/WCSessionDelegate_protocol/index.html#//apple_ref/occ/intfm/WCSessionDelegate/sessionDidDeactivate:
This callback tells your app that a watch is not present anymore, and your app should not try to communicate with its watchOS counterpart.
If you still have questions after reviewing the documentation I have referenced, please let me know.
-zk
Update: I'd also like to call your attention to the QuickSwitch sample that demonstrates how this API is used with multiple watches:
https://developer.apple.com/library/ios/samplecode/QuickSwitch/Introduction/Intro.html#//apple_ref/doc/uid/TP40016647