The rewrite was essentially to facilitate using libuv more. To paraphrase Brian Anderson: "we needed to rewrite io, and we've just taken a detour to port the runtime."
What do you mean add threading support? Last time I used libev (I thought libuv was just libev plus Windows) it allowed creating multiple loops for use in multiple threads just fine. Do you mean adding the ability to move file descriptors across threads into another loop?