If I understand correctly, you want something like:
find . -depth -print0 | perl -0lne ' if ("$_/" =~ m{/Caches(/.*)}s && $1 !~ m{/Snapshots/}) {rmdir $_ or unlink $_}'
Before: After: . . ├── a ├── a │ ├── a │ ├── a │ └── Caches │ └── Caches │ ├── a │ └── a │ │ └── Snapshots │ └── Snapshots │ │ └── a │ └── a │ ├── b └── b │ │ └── a └── c │ └── c └── b ├── c └── Caches ├── a │ └── foo │ └── a └── b └── a