"Semi" literally means "half." A semi-annual event occurs every half year, i.e. twice each year. A semicircle is half of a circle; there are two to a full circle. Of this one, I am certain.
"Bi" typically means "two" or "twice." Its usage is highly inconsistent in terms of frequency. I think its proper usage would mean "every other" (i.e. every two), but I don't know for sure. Either way, the inconsistency of its usage makes it ambiguous.
For the most part, confusion about usage comes in with monthly or weekly events. It sounds awkward to use "semi" in these cases -- honestly, who can say "semi-weekly" without sounding like a prick? -- so "bi" is typically used, thus exacerbating confusion.
Of course, I sound like a prick through all of this comment, so what can I say?
Chicken wire isn't all that expensive, either.