You have to understand that the number is actually a very opaque measure of how fragmented the free space is.
To reduce fragmentation, in general, all you can do is add free space to the pool and then either live with it or send/recv data to a new dataset and destroy the old one.