Hi,
When you delete a custom field, you have a link you can click on to also remove it from the database in the successful message.
If you don't click on it, then it stays in the database.
So that's normal.
Regarding the fact that the address field overwrite the order field, that's because we use * in the MySQL to load all the data of all the tables involved and if you have several columns with the same name, the last column loaded takes priority.
So indeed, you should either remove the column from table with the link in the successful message when you delete a custom field if you want to create a new one with the same column name in another table, or just use another column name.
On our end, as you can see, the columns of the tables are usually prefixed with the table name (so the name of the product in the product table is product_name while the name of a product in an order in the hikashop_order_product table is order_product_name. That way, even if there is a MySQL query using both tables loading everything, the data of either table is not overwritten).