In my experience, the "codec not supported by browser" error generally means that transcoding either failed or stalled. I get the error message when ffmpeg dies in the middle of a transcode myself. The transcoder still has the file cached on disk as far as it has transcoded it, but Jellyfin notices that the process has died and throws errors.
I don't think a new player will fix that issue, it's usually a resource problem on the server side.
There is a "stream the source directly" option, it's the default even, but only when it's possible to do so (i.e. the media is in a streaming container and not AVI or DivX). You can copy the download URL and paste it into your favorite native player if you want to force it, but that will probably lead to a full file download if the web player doesn't stream the file already. The only way I can think of to avoid this issue is to pre-transcode the media on your NAS to a streamable format.
As for the subtitles, I'm a little annoyed as well that the setting doesn't always stick (it works sometimes, which is even worse). I've never had desync issues though, that's probably more of an issue with the transcode lagging and confusing the player or just mismatched subtitle files.