For certain conditions, either values in the mapping table, or even better values in the simplecategory table,
I would like to take the specialcategory mapping instead, or somehow inject the values from there in that categories collection of the product.
This isn't supported in Code First (or EF in general). My suggestion would be to create a couple of views in your database to split up the records from the join table and then map two separate relationships using Code First (mapping to the views rather
than the underlying table).