Color unmixing can be tricky because what we assign as a single color to our eyes actually represents a range of colors that the module is being asked to identify and distinguish. So I think counterstaining should be fine provided you are convinced that it’s working adequately. If you’re still working on your counterstaining protocol, a bit of googling turned up this link; I’m sure you could find more.
If the counterstaining is working well, then sometimes you can have better results by using the ColorToGray module to divide the image into the R,G and B channels and work with those individually. You may be able to use the Unmix module to distinguish bone/non-bone, AppyThreshold to produce a binary image of the non-bone region, then use MaskImage on the color channel of your choice. That way, if you use the output of MaskImage as input into a later Identify modules, it will identify features only on the non-bone regions. You could also upload an image for us to take a look at.
Hope this helps!