OH already makes this as easy as possible.
The sensor is represented by a Thing and each sensor reading is represented by a Channel. You create an Item that links to that Channel. Your Rules and sitemap and persistence work with the Item. So if you need to replace the device, you simply create or discover the new device Thing and update the link to your Item to point to the new Thing’s Channel.
Rules and UIs and persistence do not change at all. I don’t think it can get any easier than this.
This is also why I strongly promote using meaningful names for your Items that are independent from the device. Frontroom_Temperature is a much better name than Zwave_Node12_Temperature. With the former not only does the name make sense to you, but if you replace the sensor with a device that uses some other technology you don’t have to change the name of your Item to remain consistent.
However, the process and procedures for the creation or discovery of the new Thing will differ from one binding to another and there isn’t much you can do about that except to document it.
Use meaningful names for your Items. You don’t need to touch the Rules.
You might be able to handle more situations by using Member of
triggers and the triggeringItem implicit variable. See Design Pattern: Associated Items for examples.