That is an interesting topic and I wish EVE would be smarter when generating the display lists.
Short answer, if you need a high number of elements, do not use widgets.
This is not exclusive to buttons but to some degree also applies to simpler things like text.
The widgets are conveniant but resource-hungry.
Alternatives for buttons would be:
Use images, find some online button generator tool that allows downloading the images, play with it to generate two images,
one plain, one with shadow, display the one or the other when needed
In addition, use images for the text on the buttons as well.
Use rectangles.
To stick with EVE Screen Editor for experiments, this is a button:
CLEAR_COLOR_RGB(255, 255, 255)
CLEAR(1, 1, 1)
COLOR_RGB(170, 170, 255)
BEGIN(RECTS)
TAG(10)
VERTEX2F(1600, 1600)
VERTEX2F(2880, 1920)
RECT
COLOR_RGB(0, 0, 0)
TAG(10)
CMD_TEXT(140, 110, 28, OPT_CENTER, "Button")
Too simple?
CLEAR_COLOR_RGB(255, 255, 255)
CLEAR(1, 1, 1)
LINE_WIDTH(128)
BEGIN(RECTS)
TAG(10)
COLOR_RGB(0, 0, 0)
VERTEX2F(1600, 1600)
VERTEX2F(2912, 1952)
COLOR_RGB(170, 170, 255)
VERTEX2F(1600, 1600)
VERTEX2F(2880, 1920)
COLOR_RGB(0, 0, 0)
TAG(10)
CMD_TEXT(140, 110, 28, OPT_CENTER, "Button")
Now we have rounded corners and a shadow.
Two buttons:
CLEAR_COLOR_RGB(255, 255, 255)
CLEAR(1, 1, 1)
LINE_WIDTH(80)
BEGIN(RECTS)
COLOR_RGB(0, 0, 0)
TAG(10)
VERTEX2F(1600, 1600)
VERTEX2F(2912, 1952)
TAG(11)
VERTEX2F(1600, 2400)
VERTEX2F(2912, 2752)
COLOR_RGB(170, 170, 255)
TAG(10)
VERTEX2F(1600, 1600)
VERTEX2F(2880, 1920)
TAG(11)
VERTEX2F(1600, 2400)
VERTEX2F(2880, 2720)
COLOR_RGB(0, 0, 0)
TAG(10)
CMD_TEXT(140, 110, 28, OPT_CENTER, "Button")
TAG(11)
CMD_TEXT(140, 160, 28, OPT_CENTER, "Test")
Even simpler?
Use one rectangle and change it's color based on if it is active or selected or pressed.