Wrong colors on rendered video
After hours of research and trial I managed to get colors right. According to this topic on blender dev tracker blender renders video with BT601 conversion in YUV colorspace. That's why I had correct colors with RGB colorspace codecs (avi raw, FFmpeg codec #1 and png) and wrong colors with codecs using YUV colorspace (h264,vp9). BT601 conversion is used on SD videos, while BT709 is used on HD videos (my video has 4k resolution). So I figured a workaround:


Render video in blender in any lossless format that uses RGB color space (like AVI RAW, FFmpeg codec #1, png).
Use FFmpeg CLI to compress the raw video with any other codec, like h264 or vp9 using following parametr -vf colormatrix=bt601:bt709. 


Here is an example of covertion from raw avi to webm with color conversion correction:

ffmpeg -i input.avi -c:v libvpx-vp9 -lossless 1 -vf colormatrix=bt601:bt709 output.webm


As you can see below, colors are almost identical (input on left, output on right). Output has slightly brighter color, but you won't notice it unless you are on really good IPS monitor.