one get_posts to return a number of custom posts for each meta value

Short answer: no.

But if you want to use one loop for all your needed posts, you can do something like this:

$args = array(
    'post_type' => 'product',
    'meta_query' => array(
        array(
            'key' => 'cf_type',
            'value' => 'fog',   // need to have 10 with value 'fog' and 10 with value 'gof'
        )
    ),
    'numberposts' => 10,
    'orderby' => 'modified',
    'order' => 'desc',
    'fields' => 'ids'
 );
$postsfog = get_posts($args);
$args['meta_query'] = array(array('key' => 'cf_type','value' => 'gof');
$postsgof = get_posts($args);
$myloopposts = get_posts(array(
                  'posts_per_page' => -1,
                  'posts__in' => array_merge($postsfog,$postsgof)),
                  'post_type' => 'product',
                  'orderby' => 'post__in',
                  'ignore_sticky_posts' => true
              ));