Actually you can force update cached metadata from code. I for example do that with External Tags. Not sure it's a good idea for a decoder but here's a piece of code to achieve it:
static void refresh_metadata(metadb_handle_ptr p_track, const file_info &p_info, const foobar2000_io::t_filestats p_filestats)
{
if (p_track.is_valid()) {
auto mio = metadb_io_v2::get();
service_ptr_t<metadb_hint_list> hint_list = mio->create_hint_list();
metadb_hint_list_v3::ptr hint_list_v3;
hint_list_v3 ^= hint_list;
hint_list_v3->add_hint_forced(p_track, p_info, p_filestats, true);
fb2k::inMainThread( [=] {hint_list->on_done();} );
}
}