I was wondering if I should shake a dice 256 times to generate my own entropy? Would that be considered more random than Crypto.getRandomValues()?
A six sided dice provides a theoretical entropy of 2.58 per roll and you only need to theoretically roll it a little over a hundred times for 256 bits of entropy for a 24 words (though you can get a 24 words seed with less entropy too). This is done under the assumption that each of the rolls are completely random and you throw it on the same way everytime and the dice is carefully designed to have zero bias, ie. Casino dice, etc. Crypto.getRandomValues() requests the browser for a cryptographically secure entropy and in Chromium's case, references dev/urandom.
I'd say no. There are various variables affecting your dice roll and potentially lower its entropy below 256bits, even if you don't realize it. Problem with Crypto.getRandomValues() is that the way it gets the entropy can differ across each browser as there is no standardization on this though mostly it does use the system's CSPRNG. If you want to be extra careful, then you can XOR your own sourced entropy with the entropy generated from urandom and that should be secure enough for most uses. The amount of entropy would be thus the source with the most entropy (of the two).
By the way, how do you key in your 24 words into Trezor? Say you already have a seed phrase and buy a brand new Trezor. What do you do then? There are only 2 buttons on Trezor right?
I assume you're talking about generating your seed off the HW wallet and then using the generated seed on your Trezor by recovering it? You should assume the security of the seed to be that of an airgapped wallet and the hardware wallet only protects you from any compromise during its usage but not during the seed generation.