Oh, boy. You have no idea how long I've waited for someone to ask that question.
The simple answer is that semi- is Latin and hemi- is Greek. But then that makes you wonder why one has an /s/ and one an /h/. The answer to that is pretty simple, too: in ancient Greek, initial /s/ became /h/ at some point. There are other pairs that show the change.
sextillion and hexagon
same, similar and homo
salt, saline and thermohaline
Circle comes from Latin and sphere comes from Greek, so they take their respective prefixes. Same thing with the other examples—the suffix -illion comes from French, so it takes the Latin form. Gon is Greek, so it gets the Greek form. And so on and so forth.
And an interesting note to end with. The /s/ -> /h/ change, as with all sound changes, has occurred in other languages too. As I understand it, some Central American Spanish dialects have undergone it, rendering words like cinco and seis as hinco and heis.