Regarding btr_search_drop_page_hash_when_freed from fseg_free_extent I noticed that only dict_truncate_index_tree makes call to it in row_truncate_table_for_mysql, though that is done after fil_discard_tablespace

Can you tell us the call-path where you found duplicate calls to btr_search_drop_page_hash_when_freed / btr_search_drop_page_hash_index (gdb bt with drop table should do)?