I’d go for btrfs, but look out for the particular caveats in its wiki, like
I think recent btrfs is also fine for SSD (but using daily fstrim, instead of a mount -o discard), what’s the issue you had in mind?
Where requiring the speed of legacy filesystems, mount a filesystem with -o nodatasum (disables checksumming) or even nodatacow (with crash risks).
However, database files and vm disk images always require: chattr -C (nodatacow on dir applied before image file creation!), qcow2: cluster_size=8K (but they may bring their own checksum, atomicy, and snapshots)
The best benefit is the possibility to make instant snapshots and being able to very efficiently send/receive them over to other (eg. backup or peer) machines with btrfs in no-time.
(Think desktop <–> NAS <–> laptop/mobile, especially!)
But keep number of snapshots as low as reasonable, to avoid performance issues.