Are all self-synchronizing cryptosystems necessarily self-synchronizing stream ciphers?
Your best bet is to use an error-correcting code to correct the errors on the ciphertext.

In general, accepting corrupted ciphertexts is a bad idea, because it can allow devastating chosen-ciphertext attacks and because unauthenticated encryption has caused major security holes in practice.

When proper authentication is in use (which should be always), any error will result in the entire message being rejected.  There are   two solutions:


Break the message into chunks, such that bad chunks can be detected and retransmitted.
Use error-correcting codes.  These allow for errors to be corrected by introducing redundancy.


These can be combined.