Filing systems using index blocks
First of all, it is not necessarily true that on average half a block is wasted. The main reason why this is false is that for small files it might be the case the more than half a block is wasted on average. Moreover, this is your main worry regarding this wastage, since is you waste half a block per large file, the fraction of blocks wasted is actually quite small. So you have to worry mainly about small files, whose size is at most a handful of blocks, and most of all for files whose size is much smaller than one block.

Second, you're asking how the index block structure can be modified to reduce this wastage. Here it's your time to be creative. One idea is to have special blocks for storing small files. I'll let you flesh this idea out. Another idea is to allow the first block of a file to start at the middle, so that two files can share one block. Of course this becomes somewhat problematic when files are updated.