Bit flips can be corrected for using, say, Reed Solomon or Hamming codes (so called memory scrapping where you keep scanning the entire memory, detect bit flips and then replace the corrupt data with the same data that had been stored on a different physical device). There actually is a lot of source code that is freely provided by the European Space Agency:
http://www.esa.int/TEC/Microelectronics/SEMK5Z8L6VE_0.html I'm not a S/W engineer so can't tell you how to implement those, but I'm probably going to use some of that in another cubesat project.
Geostationary position is not feasible with a cubesat if you want to communicate with it at 63 kbps. Neither is achieving 100% time coverage - this'd require an extensive ground station network all over the globe. TDRS may be an option, but it'd impose very strict constraints on the transponder that the cubesat would need to carry (it'd presumably cause the cubesat to be much larger than a cubesat = more expensive to build and launch). If you're looking at reducing cost as much as possible the cubesat will have to tag along as a secondary payload, in which case you don't get to choose the orbit too much, just use what other people are fine with sharing with you.
Does every cubesat really need to have 100% up-to-date data on-board an any time instance? This seems to be the main system driver to me i.e. it'll very strongly affect the constellation shape, size, ground station (GS) number and locations as well as the spacecraft (S/C) design itself. So it's important to set this requirement consciously not to make the system too oversized if it need not be. I'm sorry I don't know much about bitcoins.