This sentence can cause ambiguous meaning. If you want to translated as My friend is a Hindu from Bali, you'd say 'Teman saya adalah seorang Hindu dari Bali'. If you stick with 'Teman saya Hindu dari Bali', it will closer to 'My friend Hindu from Bali', Hindu as a person name.
I believe they meant Hindu as a religion.
All your sentences are correct! But if I have to choose, I will go with 'Teman saya beragama Hindu dari Bali.' I just looked it up in Indonesian dictionary : Hindu also means people from Hind (India),so, i think it's safe to say we pick 'beragama Hindu' instead of 'seorang Hindu'.