Hi,
When a user goes through the checkout and registers, first a Joomla user account is created in the users table. After that, HikaShop creates a corresponding entry in hikashop_user and uses the "id" from the users table to fill the user_cms_id column in hikashop_user.
If the user goes through the checkout as a guest, then nothing is created in the users table. Only an entry in the hikashop_user table is created, and thus the user_cms_id is set to 0.
The user_created column has always been in the hikashop_user table and always filled with the timestamp of when the user is added to the table.
There is no auto cleanup of hikashop_user entries. Either they are linked to the users table and you don't want to delete the user account of users automatically (at least not normally), or they are linked to an order in the hikashop_order table, and you don't want to delete that link either or you'll have an order without an email address.
When an address is created in the hikashop_address table, the user_id from the hikashop_user table for the current user is set in the address_user_id column.
I'm not sure how you get entries with the address_user_id column empty and all the other columns empty. It should not be happening. I suppose it's a glitch but well, since the address is not linked to anything, it just won't appear anywhere and you can just ignore them.