The behaviour you're seeing is actually working as expected for the setting you currently have, but I think there's a useful clarification about how WPML's three Post Type translation modes differ — and which one matches what you want.
Why /en/kirjakauppa/ and /en/tuote/... currently load
When the Products post type is set to "Not translatable," WPML treats every product as not having a language at all. There is exactly one product in the database, and WordPress's permalink rewriter happily resolves both /kirjakauppa/... and /en/kirjakauppa/... to the same Finnish content. WPML doesn't interfere because, from its perspective, "not translatable" means "this content is language-neutral, don't apply any language logic to it." So it doesn't 404 the URL and it doesn't redirect — both behaviours would be incorrect for genuinely language-neutral content.
WPML does not natively 301-redirect untranslated URLs to the default language.
Since your shop and products aren't translated and you don't want them indexable under /en/, I'd recommend:
If you specifically need 301 redirects you'll need to implement those redirects outside WPML — either with a redirect plugin (e.g. the "Redirection" plugin from wordpress.org) or in your server config. WPML doesn't generate these redirects natively.