In my experience, the first time the thing is discovered these values (label, etc) are set. After that, the Thing is cached in some storage (in case of Discovery anyhow) and is loaded from there on start, even if the physical device is not present. As such, discovery does not happen again, only the status is switched online/offline. Without going through the discvoery routine, new values aren’t available.
To summarize - yes, one can update “label”, but one does not know what the new value should be.
I’m not saying not to go through the discovery routine again, but assuming the Thing created on first discovery has the same Thing ID as the Thing created on second discovery (with updated configuration) then you shouldn’t need to manually delete them.
My binding does something similar. It sends out discovery packets which are responded too, but due to the communication protocol being UDP I receive multiple copies of the response (as a way to guard against lost packets). I create DiscoveryResults for each response but yet I don’t end up with multiple identical Things.