I’m not sure what you mean by having 2 secrets stores mounted in a KV. Do you mean that “kv/service1” and “kv/service2” are separate secret mounts of the KVv2 type?
Because from your policies it looks like you have a single KVv2 store, with multiple folders - and that’s what you should use, in this case 
Anyway. Also, yes, policies can be scoped to a single path (or item), or multiples. An example: our setup has a single KVv2 store mounted as “secret” - each application we run has it’s own slice of it, for instance:
secret/application/shinyapp-1
`- token
`- othertoken
secret/application/shinyapp-2
`- somesecret
`- anothersecret
Which means we have, for instance, secret/application/shinyapp-1/token
and secret/application/shinyapp-2/anothersecret
Anyhow. The policies associated with that are also per-app; so shinyapp-2’s policy is simply:
path "secret/data/application/shinyapp-2/*"
capabilities = ["read", "write"]
}
Which grants it the right to read and write anything under /secret/application/shinyapp-2/.
Now shinyapp-1 has a slightly different policy since (for whatever reason) it needs to be able to read the “anothersecret” token from shinappy-2 because shinyapp-2 can rotate that token any time it wants.
path "secret/data/application/shinyapp-1/*"
capabilities = ["read", "write"]
}
path "secret/data/application/shinyapp-2/anothersecret"
capabilities = ["read"]
}
This allows it to read the secret that “belongs” (by convention) to shinyapp-2.
We also store “common” credentials (such as API tokens for external services) under a path like secret/common/api/supercloudprovider/token - and we define a policy with read access, since it’s entirely possible for you to obtain a Vault token with multiple policies attached.
So, your question “how would I achieve this”: as above. Your policies are basically what restricts an app from acting on a given path; Vault KV doesn’t care, and your applications realistically just fetch a path from Vault, and as long as the policy allows you to do it then it’s all good.
Hope this helps 