First of all, thanks for the replies.
AFAIK the std vector (and maybe the set) won't reallocate memory when I call the clear() function, so the memory management shouldn't be a problem. However, implementing a simple "pool" class is not a hard task to do.
I've already seen your solution (this message-based thing) somewhere, looks pretty cool.
1.: Agreed, it could be an optimization
2.: There are already multiple structures but not for each entity type, just by shading type. I'm not sure that I'd like to bring hard-coded entity types into the engine. But with specific tasks it could be okay. The multithreading can be pain in ***, but with correct management, it can boost things up.