Yes, this is all possible with LimeLM.
-hardware lock-in
Yes, LimeLM is hardware-locked licensing.
-I would like my software not to require internet access (other than activation but not for everyday use)
Sure, you can use TurboActivate like this (TurboActivate is the part of LimeLM you include with your app). The initial activation can be done either online or offline and you can have it so your app never re-verifies with the activation servers.
-I don't mind (and actually prefer) that users download the upgrades themselves (no auto-upgrades)
That's fine.
-I would like to make their old license/serial work for upgraded version -I would like to be able to release 2.0/3.0 version of my software for which their old license no longer work
Ok, so you'd like free "minor updates" and paid major upgrades. You can do that with LimeLM. For the same minor versions of your app, just use the same version in LimeLM. For new "major upgrades" create a new version in LimeLM and those new keys won't work with the old version (and vice versa).
Does that make sense?