For the symmetric plate without a hole, you could probably just constrain a single point in the center. But as you found out, not every model is this convenient. That is where the springs approach can be useful (more general approach).
1. Make sure the Z-direction is constrained for the entire plate.
2. Set the spring stiffness to something "reasonable" like 10,000 to 100,000. It doesn't matter too much since the external loads are self-balancing. You will need to verify that the loads in the springs are relatively small though. You don't want them to pick up a significant amount of load.
3. Make sure the spring inputs to the solver are proper and you are truly getting the 1 and 2 DOF spring stiffness you desire. These are done differently in different codes and can be easy to do incorrectly. I suggest you run some test models with just springs to make sure you are getting the desired I/O (if you are not already comfortable with them).
4. You can add the PARAM, BAILOUT, -1 to the BDF and rerun. Then look at the displacement. This may give you an idea as to where the RBM is coming from and you can then correct it (for example, maybe the springs are not responding how you thought they should or they are still too soft). Also, note that the stress results with this option are *probably* still good (even if you get RBM), but you really need to find out why the RBM occurs and make sure it runs without PARAM, BAILOUT, -1.
I have set up this exact problem (and similar ones) many times and I can guarantee the approach does work. Note that you will still get a "bit" of RBM as the springs move slightly, but nothing that the solver can't handle (provided the spring stiffness is reasonable). But the important thing is that you will have a "pure" result for the stresses and your edge deformation will be as expected.
Brian