How to efficiently design the opcode for a CPU?
I think it is a good approach to study some other instruction sets.

A small one would be the MSP430 from TI it is a 16bit Processor with about 22 instructions.

http://www.physics.mcmaster.ca/phys3b06/MSP430/MSP430_Instruction_Set_Summary.pdf

You could also look into the Atmel AVRs they have also a quite small instruction set.

In a little project of mine I tried to develop a simple 32 bit processor in VHDL with a small instruction set (14 instructions):

http://www.blog-tm.de/?p=80

Due to my current free time it is not fully finished.
The instructions are implemented but two are not tested and maybe some status flags are missing.