Generally it is better to mask to an earlier processor than to a newer processor as presumably the newer processor has the features of the earlier ones but not vice-versa. If I power up with code profiling enabled without CPUID masking the VM also powers up fine.
But if I don't enable the the code profiling, the VM powers up even with CPU masked as Skylake/Kaby Lake and the guest OS isn't tricked into recognising the virtual processor as Kaby Lake or Skylake (i.e. I have Fusion 8.5.7 with a Crystal Well processor with macOS 10.12.6.
Interestingly enough, if I mask one of the Fusion VMs with Kaby Lake or Skylake CPU ID and enable code profiling I get the same error.