The material stats don’t look too bad. You might be able to get them lower by optimising the material. It’s probably worth making sure that your textures are optimised for the game too (ie. no point having each texture as a 1024x1024 in this case, so make it smaller and set the texture filter / mip-maps as needed). If you want to go futher, you could put all your possible block textures in a single sheet and use the materials / instances to select which part of the sheet you’ll be using for a given block.
FreezeRendering does I expected. As I said, if you can see one element in an instance group then all elements will be drawn. Because the bedrock is entirely hidden from the player (i.e. the player can’t see a bedrock cube) then there is no need to draw it. However, if even a single pixel of one bedrock were visible then it’ll draw all the bedrock items in that instance group.
Unfortunatly when it comes to optimisation there isn’t really a one-solution-for-all approach so you do need to dig into the technical details a bit and work out exactly what your game is doing, then try and understand if there is a better way or what other changes you can make to improvement. In most cases it’s a combination of many thing rather than one quick change.