Created a shortcode, using it twice (but differently) on a page but its just outputting the same one twice

You’re using it twice differently, but you’re not creating a unique transient name, so the second time the shortcode runs it just uses whatever was saved in the transient the first time the shortcode ran.

Come up with some way to uniquely identify the transient, like:

set_transient( 'shortcode_post_' . sanitize_key( $a['name'] ), $shortcode_post, 60*60*4 );

That said, I don’t know that there’s really much advantage to saving that result to a transient at all.