Insert/sticky multiple posts in multiple positions

You can try rebuilding an array of the two queries or splice the fixed_posts into the essays array. Maybe something like below.

$essay = get_posts();
$fixed_posts = get_posts();
$post_positions = array(2,5,10);
$x = 0;

foreach ($essays as $i => $essay) {
    if ($post_positions[$x] == $i) {
        $top_posts[] = $fixed_posts[$x];
        $x++;
    }

    $top_posts[] = $essay;
}

// Alternatively
foreach ($fixed_posts as $i => $fixed_post) {
    array_splice($essays, $post_positions[$i], 0, $fixed_post);
}