Appended comments but they show up above the content instead of below

You are using comments_template which prints out the comments and returns nothing you need to capture the comments template so try this:

function get_comments_template(){
    ob_start();
    comments_template();
    return ob_get_clean();
}

and change this line:

$result .= comments_template(); //Append the comments template to the result

to

$result .= get_comments_template();