The system capability to hibernate to disk depends on the total memory used at the time you try to hibernate. If you have a lot of memory occupied at that time, which exceeds swap file/partition, it would not succeed.
How can you track your memory is a little complicated.
Here we go:
If you have a completely empty swap partition (used swap=0%) and RAM is used at 99%, you can successfully hibernate anytime.
If you have 12GB used RAM and 5GB used swap you exceed the max (12+5>16).
With zram, RAM capability is increased, because RAM is compressed, which means something like 9GB of used RAM may be more than 16GB uncompressed RAM, which would not fit in 16GB swap partition.
If your swap partition is used even for a small amount, it is also impossible to swap (but I am not sure about that, it is a personal experience on my system)