I remembered current turn later but I could not think of your 2nd and 3rd point, you are right
I guess you can't just take a look at board to see current game state, I was too focused on what game looks like while there are additional off the board info
instead of encoding "moved king", encode "moved rook" on each rook. Since a pawn can never be on its home rank, overlap rook (not moved) & pawn (en passant) codes. Now you have a code for "king (to move)" and "king (not to move)".
If you use a variable length encoding you can also use different static probabilities for the different ranks, since "rook (not moved)" and "pawn (en passant)" can only appear on certain ranks and only depending on the piece color (well, pawns can't appear on ranks 1 or 8 at all)
I guess you can't just take a look at board to see current game state, I was too focused on what game looks like while there are additional off the board info