The spy role would be literally unplayable with friends, sounds really good on paper but is only playable with total strangers, and the bodyguard idea sounds way too op, as it can literally kill an impostor and even deny a kill, even if you remove the killing on a 1v1, the fact that it can deny a kill for anyone near you is still too op thinking that impostors literally snap to their victim's body when they kill and there's a little blood animation (if I'm not remembering wrong) too. Other than that, all those roles soud really interesting
The spy role could just be like the TF2 spy (as you said) and let you transform to someone else whenever you want instead of having to kill someone to change to their color. That would also make matches much more interesting as you could change your color to someone who everybody knows is innocent. And also, all these roles could be in like a role selection screen, so, like that new game “Enemy On Board”, once you enter a match you already have a designated role: either crewmate or impostor, but as an impostor or crewmate you can choose between different characters and “races” (for impostors). So it could work almost or exactly like that: you enter a match and you’re given the role of either crewmate or impostor but you get to decide which role you want (with the limits that you already said to each role so if someone locks up, for example, detective everybody else has detective restricted as there’s already someone who’s chosen it).
edit:rewrote the first part because I felt I didn’t quite expressed myself well and wrote the second paragraph about the roles and a “role selection system”.