I haven't fully looked at this so perhaps it's unrelated,... But one main problem I see here (that may be related), is that lvm's init-scripts are simply wrong, and abusing some things. I've already told Bastian this and there are even several bugs open.
The problem is that lvm's init script simply doesn't to an lvchange -ay but try to detect the LV holding root. And it does this in a wrong way by using the root= kernel param (which is the final device, containing the root-fs) Most lvm/dm-crypt realted I've seen were simply solvable by letting the lvm initscript just do an lvchange -ay (thereby making all LVs available) and then using dmcrypt/cryptsetup as normal.
smime.p7s
Description: S/MIME cryptographic signature