The tree idea is a good one, and I think a good way to avoid over- or under-specifying would be to give each release multiple tags for each node of the tree below its individual subgenre. For example, all dark releases could be tagged with both "psytrance" and "dark", while forest trance releases could be tagged with "psytrance", "dark" and "forest".