This doesn't look too difficult, other than supporting random address generation. We could start by not implementing random decoys, then add random later. If we add random address generation here, we should also allow -iR for IPv6 (which is not a requested or priority feature).
One doubt here, as we have to support decoys for IPv6 also then here should we maintain two separate data structures or some kind of typecasting can be done ?
As o.decoys has been used at many places we could try avoiding different variable but I can't figure out how to do that.