Hmm.. the crash tends to be that the game tries to read the data of a defenseman (such as his name) during the menu screen, when it shows the player pictures and names. If the team has fewer players than the index of that defenseman, then the game crashes because it tries to read a player who isn't there anymore.
Most teams had 2 goalies and 12 forwards, so probably the D in the pictures are in the top 4 D.. so probably yeah around 18 is pretty safe.
The key to fixing it so you can use as few players as you want is to set the player picture indexes. The guide for that is here: http://forum.nhl94.com/index.php?/topic/216-how-to-player-card-tutorial-nhl94-nhl95/
If you scroll down to KingRaph's post in that thread where you can see the big table... You'll see the "Pos#" column, with values like 0000 ('first' player, it's the main goalie), 0002 (usually the 1st-line center), 000F (this is a hexadecimal number for 15, so this is typically a defesman), or 0011 (hexadecimal 17) is another D.
The simple fix is to set those numbers to lower numbers like 0000, 0007, 0008, 0003, 0002, 0004.
Alternatively, you could use EARE (http://forum.nhl94.com/index.php?/topic/10443-eare-ea-rom-editor-for-nhl94/) and set the names in the PlayerCardsDefault.txt to your new player names, and it'll fix them when you click the "Set Player Pictures" button in EARE.