I can do most of those things using my old Areca hardware RAID controller and XFS.
Data integrity is maintained in my RAID array which has its own battery-backed ECC memory. I can grow and shrink logical volumes on the fly. I can change the striping or even the RAID level without any downtime. I replaced all of the drives in my RAID array (one at a time) with larger drives with zero downtime.
Running XFS makes it easy to do incremental backups or doing the equivalent of DD on a mounted filesystem using xfsdump. It also supports defragmentation while mounted.
The RAID array also does data scrubbing and runs all of the SMART checks.
I can easily add more capacity without downtime, just drop another disk in the array and add it.
While I can't do snapshots or native compression, I can do most other things. Compression would do nothing for me since most of my data is already compressed. I run continuous backup software to back up onto removable SATA drives as well as to a cloud backup service (Crashplan) which encrypts everything. It maintains snapshots of everything and I have several TB backed up that way.
While I haven't played with ZFS, I did try out BTRFS but had to throw it out. Performance was abysmal on the SSD I was using and without a clear way of knowing how much space is free is a major issue. If everything is snapshotted, how do you deal with deleted files when you run low on space? The performance of trying to put my IMAP server on it was unusable. I gave up after a couple of hours trying to write all of my emails to it on a SSD. On XFS or EXT4 it takes a fraction of the time, despite it being hundreds of thousands of small files.
Also, I can still run bcache or some other method of using a SSD to cache my data.
I have been using XFS for years and always found it to be reliable, more so than my experience with EXT2/3/4 though I'm also one of the rare people who never had a problem with the killer Reiserfs. My IMAP server ran for 10 years on Reiserfs with the same hard drive with uptimes on the order of years before I finally retired the machine (the hard drive has over 10 years of uptime according to SMART). The only major problem I had was that the Linux kernel had a bug where the uptime would wrap after 497 days. After that happened a few times I finally had to reboot the computer when the UPS died and it loaded an updated kernel.