I like zfs and after testing WS 2016 I stuck with zfs, but there are areas where freenas has fallen behind when it comes to utilizing SSDs.
It does a type of caching with slog and you can add L2ARC as a substitute for RAM. I use both of these. But the L2ARC is only utilized when data is flushed from RAM so it's not really a way to add SSD capacity and slog drives just need to be small, low latency drives. It doesn't do any good to use big drives. This all goes back to the fact that the underlying zfs code was written for HDD arrays and, imho, it is still the best implementation of software raid for HDDs. It just does nothing to utilize big cheap SSDs.
What I want to do is use a bunch of low cost SSDs (I've been picking up 960 GB drives whenever I find them below $200) and use them along side HDDs. You can of course create multiple zpools for SSDs and HDDs but that's not ideal. Freenas isn't setup to mix media types.
The other places it's fallen behind is rebalancing loads, online raid level migration and easily adding disks to existing zvols. Deduplication is also basically unusable. I suspect these features and more are present in the current, oracle owned, implementation of zfs but we are at the mercy of a few developers working with 10 year old tech. I hoped that MS with their army of developers and 4 years of working on ReFS would be the better choice, and on paper it does those things, but in my testing the real world performance is not there yet.
I should also note that I'm only looking at iSCSI storage for VMware.