We don’t cure schizophrenia here, but I can help with your GSM question.
In Idle Mode, you feel like too many MS are camping on one cell. As MKT-bis said, decreasing the CELL RESELECT OFFSET or changing Temporary Offset/Penalty Time might help.
But you don’t want to do that ?
So in this case, you have to configure your Forced Directed Retry and other traffic mechanisms, so that neighbor cells will accept incoming call setups from a different cell.
MS will start the call setup in cell A (RACH + SDCCH) but the TCH itself will be allocated on cell B.