I have used custom fields in the past to do something kinda like this. You name each custom field the same, and then in the value, give it some separation character. I used ||.
Then you can do something like this:
$output = array();
foreach($custom as $c)
$output[] = explode('||',$c);
Then you’ll have an array of arrays with your information. From there you should be able to do with it what you want.
I also wrote a shortcode to go along with this, that allowed me to display it anywhere in the page. That allows you to have more flexibility, and you don’t have to mess with a custom template.