I solve this by removing metadata caching. Maybe you don't need to cache the metadata?
And what signal it should emit when metadata of stream changes? Now it emits MPRIS_SIGNAL_TRACKLISTCHAGE signal. But some MPRIS clients (pidgin-mpris, for example) use only MPRIS_SIGNAL_TRACKCHANGE.