Best way to globally listen to creation, update and destruction of networked PhotonView objects?

Options
We're currently integrating PUN within an existing gameplay prototype. Our existing MVVM view system profits from having a centralized place to subscribe to interesting changes, or query data from.

Optimally, we'd like to create an API that lets us easily listen to when GameObjects with a PhotonView are created, destroyed (and, optimally, changed/updated). Our UI layer is reactive (using UniRx), so we'd love to funnel these events into Observables, too.

I've checked our options/contact points for this, and found the following possible routes so far:
  • query PhotonNetwork.PhotonViews every frame, run it through a Differ (that we already have) to get Added and Removed events out of them. This could work, but calls to PhotonView are expensive, and we'd still need to manually implement IEqualityComparers for every PhotonView to also get Changed events out of this.
  • I've checked all available IPunCallbacks but didn't find anything related to networked entity (PhotonView) creation, deletion or update.
  • we could send a global Event whenever something gets instantiated or destroyed, but that seems like a waste of traffic, and could cause other issues.
  • we could catch the instantiation/destruction in each individual PhotonView, and then somehow bubble it up to our controller structure. I guess this would do as a workaround.
Our best-case scenario would be to either register to some observable property on PhotonNetwork, implement OnPhotonViewInstantiated, OnPhotonViewDestroyed and OnPhotonViewUpdated callbacks from an interface, or register to such events. Is there anything like that that I've missed? Or any other options? Thanks!