good job, locrect was where i traced the crc blues down to aswell. If you have crc working why not try using quickchecksum() by absorbix from GD. You will find that it does the same but without the lag crc can give you.
With the vertex stuff you can try playing around with UINT StartRegister,CONST float* pConstantData,UINT Vector4fCountUINT.
Opfor is a startregister of 45 so eg.
if (startregister == 45)
{
.... do whatever
}
You can also use Vector4fCountUINT aswell.
What i liked about doing stuff through setvertexshader was that you can skipp the LOD stuff, ie one value will detect the same model at whatever distance..