The [LZ4 algorithm](http://en.wikipedia.org/wiki/LZ4_(compression_algorithm)) could be an option.

It checks if the beginning of a block is compressible and stores it uncompressed if the ratio is low. This sucessfully prevents compression of already compressed files without the need to specify their names.

The overall compression ratio is lower compared to the algorithms you mention. But LZ4 is very fast, on the other hand. You can easily reach several hundred MiB/s compression and GiB/s decompression speed.

Examples:

 # Compression (creates <inputfile>.lz4)
 lz4c <inputfile>

 # Decompression
 lz4c -d <inputfile>

 # Use with tar
 tar cf - <directory> | lz4c > <directory>.tar.lz4