The only blocks that can store NBT are Block Entities; chests, flower pots etc.
You can't as well specify NBT in the CanDestroy tag.
An easy way, though which only works for some blocks, is to find an identical block, and then specify that block in the CanDestroy tag.
For instance, build something out of stone monster eggs, put some normal stone blocks somewhere, and let the player break only normal stone blocks.
Though, more ways do exist.
-For instance, you can remove the tag from the tool when the player isn't in a specified zone, instead of changing the gamemode.
-A more 'ugly' way of doing it could be to fill the area with the block, constantly, or when a player breaks a block.
-You could attach a resource pack to the server, change i.e the diamond block texture to stone, and then set the CanDestroy tag to destroy only stone
-You could put invulnerable and invisible entities (probably shulkers or slimes) inside the block if you only want to cover small areas (as many entities cause lag)
The best and least laggy choice would probably be the resource pack