Is there a way to prevent code being read from an MSP430 without blowing the fuse?
MSP430Fxx microcontrollers can be programmed via the JTAG or Spy-Bi-Wire Interface as long as the Security Fuse is not blown! When the Security Fuse is blown as in your case, then the MSP430Fxx microcontrollers can still be accessed, but only via the BSL Interface. For an example C source code and project files, have a look at here: SLAU320

JTAG is locked by programming a certain signature into the devices' flash memory at
dedicated addresses. The JTAG security lock key resides at the end of the bootstrap loader (BSL) memory at addresses 0x17FC to 0x17FF. Any value other than 0 or 0xFFFFFFFF programmed to these addresses irreversibly locks the JTAG interface.

Because the JTAG security lock key resides in the BSL memory address range, appropriate action must be taken to unprotect the memory area before programming the protection key.