lightnvm: fix wrong usage of block referencing

We could put a ref that was already dying. This would happen if we
started GC after we checked if GC is running for a block.

We can't take a lock on the hole block, as it would crawl performance for
sequential accesses. Instead, we now explicit check if a ref is dying, and
omit kref_put (as in this case its the GC performing the reads).

Additinally, we also gain that moving of pages are done asynchronously.