No, unfortunately you can't have your cake and eat it too. At least not by just using the native dialer. Android will only choose a ringtone based on caller id.
There is the option of setting up SIP Droid or GrooveIP for the sole purpose of ringing for an incoming call. You could continue to forward GV to your cell as well as the second number picked up by those apps, and you would simply know they are calling your GV number because that app is ringing. A bit hacky, as you have two apps ringing (native dialer and the second app you chose), but it is an option. I think they can be set up to reject a call after a few seconds, so you would note that they rang for a couple seconds, then pick up the native dialer knowing it is coming via GV.
If you have a good enough connection, you could disable forwarding GV to your cell and instead only forward to your Chat client (which is used by GrooveIP or SIP Droid). Then you would set that program to make a different ringtone, and you would have the person's correct caller ID. But it means your call goes over data, which can be less reliable.