Displaying list of posts in category page

One option would be to just replace category template with another file from the plugin using category_template filter:

function change_category_template( $template ) {
    $category_template = plugin_dir_path( __FILE__ ) . 'new-category.php';
    return $category_template;
}
add_filter( 'category_template', 'change_category_template', 999 );

So, in the new file you could have the structure you want.

The main problem is that you are replacing the entire template file and if you want something that would work with any theme it’s more difficult to achieve that.