The reason your query is slow is because there are no indexes for the way you want to return the data.
Notice the "Bitmap Index Scan" where it is saying, I know you have an index but I have to look at the whole table to find the row I need (hence total row scan of up to 301742!). This is probably because of the combination of other columns you have asked for and the constraints you are applying i.e. item_mods.mod_id = 15
Try:
"items".* - Only select out the columns you need rather than everything.
Create an index on: item_mods.item_id AND item_mods.mod_id
Create an index on: items.league_id AND items.item_type_id AND num_sockets (assuming num_sockets is on the same table)
Any performance difference?