My theory on how this might happen is an independent implementation of BtrFS that extends from ZFS code, sharing it whenever possible.
Should such a thing emerge and surpass current BtrFS, what else could Oracle do but throw in the towel?
From my understanding both Linus and ZoL team prefer to be separate.
But it's unlikely they'll do it. In recent years they've relicensed-under-GPL some things (like the DTrace userspace utilities) but I have doubts they'd ever do it for something like ZFS.
I sincerely doubt that. If Oracle would relicense/dual license ZFS as GPLv2 compatible then I feel convinced that the ZoL contributors would happily do so as well.
I can't think of a single reason why they would not want to be in mainline Linux, and I have seen nothing indicating that the Linux kernel devs would be anything but happy to have it 'mainlined' as it would only make Linux better.
Of course this all hinges on Oracle, which makes it extremely unlikely in my opinion.
From my personal look, there could be significant mess due to attempts to "remove duplication" or similar moves to make the code more linux-like. While ZFS is not the rampant layering violation some people accused it of, there's significant amount of code there (and funnily enough, there's actually overlap with some less-known linux features)
Yes, all the parties that contributed code would have to agree, not just Oracle. However, I doubt anyone would object relicensing ZFS to some license that both FreeBSD and Linux would find acceptable.
That can still be somewhat true due to the licensing mess. ZoL will never be in the tree for linux. The best you can hope for is the Canonical solution which at least ensures a supported version for the distro kernel.