You cannot use zz that way, use an additional signal to gate the consideration of lp1 and lp2.
So your earlier code would set lp1_en and lp2_en as approprite and you would then write:
if (LP1 ="00" and LP1_EN = "00")
then
addout <= "00";
You seem to be thinking of VHDL as a programming language rather then a hardware description language, you have to think in terms of things realisable in terms of LUTs and flipflops, Z makes sense in terms of an output signal connected to a tristatable output buffer, but that is the only place it makes sense.
For a small priority encoder, have you considered just using a lookup table in some block memory?
It might be simpler then doing it in explicit logic.
Regards, Dan.