Vielen dank Mark,
After lots of playing around today, I finally got OpenTCP working and BDMed into some NE64s.

Here's a recap of the things I had to modify, in case someone else runs into the same problem.
First of all, in the PRM file, you'll want to keep the RAM in the same spot as the OpenTCP default:
RAM = READ_WRITE 0x3200 TO 0x3FFE; /* BUFMAP = 4 (1.5K) */
is what I used, but any of the other BUFMAP settings should work. When I switched to BDM programming, CodeWarrior generated a PRM file with the RAM from 0x0400 to 0x1fff - that's the only reason why I was hesitant to revert.
Next, the INITRM stuff that you mentioned comes into play. In the Start12.c file, if you're using _HCS12_SERIALMON, then the following three instructions are executed:
___INITRG = 0x00; /* lock registers block to 0x0000 */
___INITRM = 0x39; /* lock Ram to end at 0x3FFF */
___INITEE = 0x09; /* lock EEPROM block to end at 0x0fff */
Since in my 'new' project, _HCS12_SERIALMON was not defined, the instructions were never run and having my RAM from 0x3200 to 0x3ffe didn't work. Having the RAM from 0x0400 to 0x1fff was fine however. I just commented out the "#if defined" bits in Start12.c to ensure that these always get executed.
Having done that, I could get the code to run, but interrupts were still buggy and the ethernet wouldn't work. The problem here was again how the project wizard set up the PRM file in conflict with the OpenTCP code. In the PRM file, I have a line that says:
VECTOR 0 _Startup
However, in Vectors.c, the _Startup vector is also defined in the interrupt table:
const tIsrFunc _vect[] @0xFF80 = {lots of stuff, _Startup};
If you try to compile, you get a linker error because _Startup is doubly defined. I guess I 'patched' this by removing Vector.c from the project.

After retracing my steps, I realised that the interrupts were buggy because there was no interrupt table! So I put Vector.c back in the project and removed _Startup from it. Then the linker was happy and everything finally worked.

Alternatively, I imagine you could scrap the VECTOR 0 _Startup from the PRM file and leave Vectors.c as it was, but I haven't tested that.
The moral of the story: "the transition from serial monitor programming to BDM programming would have been much easier had the OpenTCP paradigm and project wizard paradigm been congruent". Or "if I knew what I was doing, this probably wouldn't have been so bad".

Thanks again for the help, and hope this info helps others...
Jeff