Open whichever system.def file you plan to use and search for "[Select Info]" with ctrl + f. Once you get there, change the rows and columns values until you can fit the number of slots you want. Once you have that figured out, you can start adjusting the cell.size, cell.spacing, etc. values so the individual slots actually fit onto the screen. In the spoiler below is an example of the changes I made to the Mugen1 Remix Screenpack I use for my roster, which is structured the same way as the Cosmic Drift Screenpack, so you can use it to get an idea of what I mean if the above doesn't make sense. I also included some more detailed instructions that (ideally) will help you understand what you're changing and why.
Spoiler, click to toggle visibilty
Quick note: each of the paragraphs written below corresponds to the section of code that comes immediately before it. The first section is about rows and columns, the second is about the sizing of the select screen's slots and the third is about the sizing for the select screen's cursor.
;Character select definition
[Select Info]
fadein.time = 10
fadeout.time = 10
rows = 10 ;7
columns = 35 ;23
wrapping = 1
pos = 40, 338 ;20, 338
showemptyboxes = 1
moveoveremptyboxes = 1
The only things I've changed in the above section are the rows, columns and pos values. The first two values determine how many slots are available, while the pos value determines where on the screen the slots are positioned. I would suggest you keep the default values handy by pressing tab a few times and sticking a semicolon in front of them so the game doesn't check them. That way, you can hold onto them if you need them for something later down the line. They also make for a handy reference point when deciding what to change and how. I use the 16:9 version of Mugen1 Remix, so the actual values you'll see when you reach the [Select Info] section might be different than what mine looks like. Don't worry about that, it's not a problem.
cell.size = 30, 29 ;50, 49
cell.spacing = 4 ;4
cell.bg.anim = 150
cell.bg.scale = 0.3, 0.3 ;0.5, 0.5
cell.random.spr = 151, 0
cell.random.switchtime = 4
cell.random.scale = 0.3, 0.3 ;0.5, 0.5
This section is what determines the actual sizes of the individual character slots. If you don't change these after adding the extra slots, most of the ones you add will run off the bottom of the screen and be invisible (if not unselectable), so you'll have to adjust the values with semicolons too. This will require a little trial and error, but it shouldn't be too hard to figure out so long as you use the in-game character select screen to check your work.
p1.cursor.startcell = 0, 0
p1.cursor.active.anim = 160
p1.cursor.active.scale = 0.3, 0.3 ;0.5, 0.5
p1.cursor.done.spr = 161, 0
p1.cursor.done.scale = 0.3, 0.3 ;0.5, 0.5
p1.cursor.move.snd = 100, 0
p1.cursor.done.snd = 100, 1
p1.random.move.snd = 100, 0
This last section determines the size of the cursor you use to navigate the character select screen. You should only need to change the active.scale and done.scale values (make sure they match the size of the character slots you decide on), and once you do that you can just copy them over to the active.scale and done.scale fields for players 2/3/4. Those are all directly under this section, so you shouldn't have any trouble finding them.