But polylang changes behaviour of get_post_type_archive_link() and forces 'en' to url even if I have particular cpt unchecked.
That's a bug. I just uploaded a new development version (1.7.5.1) to fix that. I would be glad if you could test it.
https://downloads.wordpress.org/plugin/polylang.zip
Also you can resolve duplicate content issue by adding canonical to wp_head action like "<link href="url-of-the-original-content" rel="canonical"/>"
Yes. That's a possibility, but WordPress generally keeps only one url and uses canonical redirection instead.