Checked exceptions are problematic--I've heard them best described as a "Failed Experiment".
Unchecked runtime exceptions are a pretty good way to handle sticky situations. For instance, you often have a large high-level thread that is expected to run "Forever". There may be 30 places in that thread (inside different methods) that read from a database or interact with some other unstable source.
If that data source fails, you always want to handle it the same way--reconnect then restart your main loop.
This is very easily handled in the high-level thread but if each object handles it itself it spreads horrible error-check code all across your project.
So the answer is, feel free to wrap your checked in an unchecked runtime exception if there isn't anything useful you can do at that level--and I'd advise NEVER throwing a checked exception unless there is something that the caller MUST handle immediately (Which is almost never the case--most problems can be handled at a higher level).
By the way, I do this a lot and almost never use new exceptions--you can reuse existing ones unless you have some reason to differentiate between the exceptions at a higher level.