{% cache %} tag creates duplicate entries
Correct... by default the {% cache %} tag will use the current page's URI (including querystring) for the cache key.  If you want to change that behavior you'll need to specify the using key parameter and supply a unique key.  Although you might want to make something more unique than just block.id as that will be an integer and could potentially easily be overwritten.