Fix Time#change when used with :usec or :nsec options together with offset times

This is a follow-up of #16758 and the branch is based on it.

Fixes #16759.
Yep, will work on this later today to get it finished. Btw, do you think we should break this in 2 separate PRs? The first adding support for `:nsec` and the other fixing the issue when using `Time.new`?

If so, I will fix the PR about the `:nsec` option first so we can merge it and then work on this too.