Jiles,
Thanks for the tip. I had used the CRI library in the past but had forgotten about it. This ended up being the solution to my issue. I still think that programatic options for shared variables should be a little more flexible but i worked around it.
Within the CRI library there is a CRI Get Remote cRIO Controller Info within this VI is another VI cri_RT Ping Controller. This is the key function i ended up using. I just set a super short timeout on the function and check for an error before opening a shared variable connection.